home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / DEMO / FRACT / FRACTINT.DOC < prev    next >
Text File  |  1990-05-26  |  175KB  |  3,737 lines

  1.  
  2.                       Fractint Version 13.0r
  3.  
  4.  NOTE:  version 13.0r is just version 13.0 re-compiled under Microsoft C
  5.  version 5.1 (13.0 was compiled under MSC 6.0).  When compiled under MSC 6.0,
  6.  the 'type=formula' code is partially broken (selecting the 'tetrate'
  7.  formula, for example, hangs your PC).  There is no corresponding 13.0r
  8.  source-code release, because the source code hasn't changed.
  9.  
  10.  *************************************************************************
  11.  *            WARNING          WARNING             WARNING               *
  12.  *              >> F1, not 'h', is now the HELP key!!! <<                *
  13.  *      For Help at any time, press the F1 key                           *
  14.  *      For EGA 320x200x16 video mode, press the F9 (not F1) key         *
  15.  *      For EGA 640x200x16 video mode, press the CF4 (not F9) key        *
  16.  *************************************************************************
  17.  
  18. CONTENTS
  19.  
  20. New Features in Version 13.0
  21.  
  22. Introduction
  23.  
  24. 1. Quick Start: FRACTINT Commands
  25.     Plotting
  26.     Colors
  27.     Saving, Restoring and Printing
  28.     "3D"
  29.     Hints
  30.  
  31. 2. Fractal Types
  32.      Mandelbrot
  33.      Julia
  34.      Newton's Formula
  35.      Lambda
  36.      Plasma Clouds
  37.      Lambda/Sine, Cosine, Sinh, Cosh, Exponent
  38.      Mandel/Sine, Cosine, Sinh, Cosh, Exponent
  39.      Barnsley Mandelbrot/Julia
  40.      Barnsley IFS
  41.      Sierpinski Gasket
  42.      Quartic Mandelbrot/Julia
  43.      Distance Estimator Mandelbrot/Julia
  44.      Pickover Mandelbrot/Julia Types
  45.      Peterson Variations
  46.      Unity
  47.      Bifurcation
  48.      Lorenz, Lorenz3d
  49.      Rossler
  50.      Henon
  51.      Pickover
  52.      Gingerbreadman
  53.      Test Stub
  54.      Formula
  55.      Julibrots
  56.      Diffusion
  57.  
  58.     Doodads, Bells and Whistles
  59.      "3D" Images
  60.      Inversion
  61.      Decomposition
  62.      Starmaps
  63.      Logarithmic Palettes
  64.      Pickover Biomorphs and Popcorn
  65.  
  66. 3. Command-Line Arguments, Batch Mode, and SSTOOLS.INI
  67.  
  68. 4. File Formats, Colors, and All That
  69.     .FRA and .GIF Files
  70.     Continuous Potential
  71.     Palette Maps
  72.  
  73. 5. Hardware Support
  74.     Notes on Modes, "Standard" and Otherwise
  75.     FRACTINT.CFG
  76.  
  77. 6. Fractals and the PC
  78.     A Little History
  79.      B.M. (Before Mandelbrot)
  80.      Who Is This Guy, Anyway?
  81.     A Little Code
  82.      Logic Speed-ups
  83.      The Limitations of Integer Math
  84.      The Fractint "Fractal Engine" Architecture
  85.  
  86. Appendix A: Mathematics of the Fractal Types
  87. Appendix B: Stone Soup with Pixels
  88. Appendix C: Revision History
  89. Appendix D: Bibliography
  90. Appendix E: Other Recommended Fractal Programs
  91.  
  92.  
  93. NEW FEATURES IN VERSION 13.0
  94.  
  95. F1 is now the HELP KEY!!!
  96.   Use F1 for help
  97.   Use F9 for EGA 320x200x16 video mode
  98.   Use CF4 for EGA 640x200x16 mode (if anybody uses that mode)
  99.  
  100. Speed!!  More speed!!  We've gotten faster!!
  101.  
  102. Super-Solid-guessing (three or more passes) from Pieter Branderhorst
  103.   (replaces the old solid-guessing mode)
  104.  
  105. New Boundary Tracing option from David Guenther
  106.   ("fractint passes=btm", or use the new 'x' options screen)
  107.  
  108. New "outside=nnn" option sets all points not "inside" the fractal
  109.   to color "nnn" (and generates a two-color image).
  110.  
  111. New 'x' option from the main menu brings up a full-screen menu of many
  112.   popular options and toggle switches
  113.  
  114. New "Speed Key" feature for fractal type selection (either use the
  115.   cursor keys for point-and-shoot, or just start typing the name of
  116.   your favorite fractal type)
  117.  
  118. New "Attractor" fractals (Henon, Rossler, Pickover, Gingerbread)
  119.  
  120. New diffusion fractal type by Adrian Mariano
  121.  
  122. New "type=formula" formulas from Scott Taylor and Lee H. Skinner.
  123.  
  124. New "sound=" options for attractor fractals
  125.   Sound=x  plays speaker tones according to the 'x' attractor value
  126.   Sound=y  plays speaker tones according to the 'y' attractor value
  127.   Sound=z  plays speaker tones according to the 'z' attractor value
  128.   (These options are best invoked with the floating-point algorithm
  129.   flag set.)
  130.  
  131. New "hertz=" option for adjusting the "sound=x/y/z" output.
  132.  
  133. Printer support for color printers (printer=color) from Kurt Sowa
  134.  
  135. New video modes:
  136.   Trident 4000 and Oak Technologies SuperVGA support from John Bridges
  137.   Improved 8514/A support (the zoom-box keeps up with the cursor keys now!)
  138.   Tandy 1000 640x200x16 mode from Brian Corbino (which does not, as yet,
  139.      work with the F1(help) and TAB functions)
  140.  
  141. The Julibrot fractal type and the Starmap option now automatically
  142.   verify that they have been selected with a 256-color palette, and
  143.   search for, and use, the appropriate GLASSESn.MAP or ALTERN.MAP
  144.   palette map when invoked.  *You* were supposed to be doing that
  145.   manually all along, but *you* probably never read the docs, huh?
  146.  
  147. Bug Fixes for Version 12.0:
  148.  
  149.   TAB key now works after R(estore) commands
  150.  
  151.   PS/2 Model 30 (MCGA) adapters should be able to select 320x200x256
  152.     mode again (we think)
  153.  
  154.   Everex video adapters should work with the Autodetect modes again
  155.     (we think)
  156.  
  157.  
  158. INTRODUCTION
  159.  
  160. FRACTINT plots and manipulates images of "objects" -- actually, sets of
  161. mathematical points -- that have fractal dimension. See chapter 6 for
  162. some historical and mathematical background on fractal geometry, a
  163. discipline named and popularized by mathematician Benoit Mandelbrot.
  164. For now, these sets of points have three important properties:
  165.  
  166. 1) They are generated by relatively simple calculations repeated over
  167. and over, feeding the results of each step back into the next --
  168. something computers can do very rapidly.
  169.  
  170. 2) They are, quite literally, infinitely complex: they reveal more and
  171. more detail without limit as you plot smaller and smaller areas.
  172. FRACTINT lets you "zoom in" by positioning a small box and hitting
  173. <Enter> to redraw the boxed area at full-screen size; its maximum
  174. linear "magnification" is over a trillionfold.
  175.  
  176. 3) They can be astonishingly beautiful, especially using PC color
  177. displays' ability to assign colors to selected points, and (with VGA
  178. displays or EGA in 640x350x16 mode) to "animate" the images by quickly
  179. shifting those color assignments.
  180.  
  181. The name FRACTINT was chosen because the program generates many of its
  182. images using INTeger math, rather than the floating-point calculations
  183. used by most such programs. That means that you don't need a math co-
  184. processor chip (aka floating-point unit or FPU), although for a few
  185. fractal types where floating-point math is faster, the program recog-
  186. nizes and automatically uses an 80x87 chip if it's present. It's even
  187. faster on systems using Intel's 80386 and 80486 microprocessors, where
  188. the integer math can be executed in their native 32-bit mode.
  189.  
  190. FRACTINT works with many adapters and graphics modes from CGA to the
  191. 1024x768, 256-color 8514/A mode. Even "larger" images, up to
  192. 2048x2048x256, can be plotted to RAM, EMS, or disk: this bypasses the
  193. screen and allows you to create images with higher resolution than your
  194. current display can handle, and to run in "background" under multi-
  195. tasking control programs such as DESQview.
  196.  
  197. FRACTINT is an experiment in collaboration. Many volunteers have joined
  198. Bert Tyler, the program's first author, in improving successive ver-
  199. sions. Through electronic-mail messages, first on CompuServe's PICS forum
  200. and now on COMART, new versions are hacked out and debugged a little
  201. at a time. FRACTINT was born fast, and none of us has seen any other fractal
  202. plotter close to the present version for speed, versatility, and all-
  203. around wonderfulness. (If you have, tell us so we can steal somebody
  204. else's ideas instead of each other's.) See Appendix B for information
  205. about the authors and how to contribute your own ideas and code.
  206.  
  207. The executable FRACTINT.EXE is public domain, and we encourage you to
  208. share copies and upload it to bulletin-board systems. Except for those
  209. modules marked with a copyright notice (and subject to the authors'
  210. conditions in the notices), the source code is also public domain.
  211. There is no warranty of its suitability for any purpose, nor any
  212. acceptance of liability, express or implied.
  213.  
  214. Contribution policy: Don't want money. Got money. Want admiration.
  215.  
  216.  
  217. 1. QUICK START: FRACTINT Commands
  218.  
  219. To start the program, enter FRACTINT at the DOS prompt. The program
  220. displays an initial "credits" screen, and waits for you to hit a
  221. command key that will (1) start plotting in a specific video mode or
  222. (2) set one of many options. You can also (at this screen or at any
  223. time) press a HELP key (<H> or <?>) for screens describing the commands
  224. and video modes. As soon as you select a video mode, the program begins
  225. drawing an initial display -- the "full" Mandelbrot set, if you haven't
  226. selected another fractal type. From this point on, and AT ANY TIME, you
  227. can hit any of the following keys to select a function. (For the
  228. "typewriter" keys, upper and lower case are equivalent: <B> and <b>,
  229. <?> and </>, have the same result.)
  230.  
  231. Many commands and parameters can be passed to FRACTINT.EXE as command-
  232. line arguments or read from a configuration file; see Sec. 3 for
  233. details.
  234.  
  235.                       Plotting Commands
  236.  
  237. <F1> or <?>
  238. Bring up a help screen. The Escape key brings you back.
  239.  
  240. Function keys & various combinations (see help screens)
  241. Select the corresponding video mode and redraw the screen
  242.  
  243. <Page Up>
  244. Display and shrink the zoom box ("zoom in"). The LEFT button of a mouse
  245. displays the box; push the mouse away from you while holding that
  246. button down to shrink the box.
  247.  
  248. <Page Down>
  249. Display and expand the zoom box ("zoom out"). Pulling the mouse towards
  250. you with the left button down has the same effect.
  251.  
  252. Cursor ("arrow") keys
  253. Move ("pan") the zoom box. Moving the mouse has the same effect. With
  254. an enhanced-keyboard BIOS, <Control> plus a cursor key moves the box 5
  255. times faster. With a mouse, the RIGHT button controls fast vs. slow
  256. panning.
  257.  
  258. <Enter> ("Return") or <End>
  259. Redraw the area inside the zoom box as a full-screen image. Or press
  260. BOTH mouse buttons. (If there is no zoom box, this just re-draws the
  261. current screen.)
  262.  
  263. <Control><Enter>
  264. "Zoom out," so that your screen would fill the current zoom box, and
  265. redraw.
  266.  
  267. <Home>
  268. Redraw the previous image. The program tracks 50 sets of coordinates.
  269.  
  270. <Tab>
  271. Display the current fractal type, parameters, screen or (if displayed)
  272. zoom-box coordinates, maximum iteration count, and other information
  273. useful in keeping track of where you are.  With version 12.0, the Tab
  274. function is non-destructive - if you press it while in the midst of
  275. generating an image, you will continue generating it when you return.
  276. The Tab function now also tells you if your image is still being
  277. generated or has finished - a handy feature for those overnight,
  278. 1024x768 resolution fractal images.
  279.  
  280. <Spacebar>
  281. Toggle between Mandelbrot-set images and their corresponding Julia-set
  282. images. Read the notes in Sec. 2 before trying this option if you want
  283. to see anything interesting.
  284.  
  285. < or >
  286. Lower or raise the maximum iteration count (the number of times the
  287. program carries out its basic calculation before assigning colors). See
  288. Sec. 2.  (Note: the maximum iteration count can now also be selected
  289. explicitly using the "X" options screen.)
  290.  
  291. <1>, <2>, or <G>
  292. Select single-pass, dual-pass, or solid-guessing (default) mode, then
  293. redraw the screen. Single-pass mode draws the screen pixel by pixel.
  294. Dual-pass generates a "coarse" screen first as a preview using 2x2-
  295. pixel boxes, and then generates the rest of the dots with a second
  296. pass. Solid-guessing performs from two to four visible passes - more
  297. passes in higher resolution video modes. Its first visible pass is
  298. actually two passes - one pixel per 4x4, 8x8, or 16x16 pixel box
  299. (depending on number of passes) is generated, and the guessing logic
  300. is applied to fill in the blocks at the next level (2x2, 4x4, or 8x8).
  301. Subsequent passes fill in the display at the next finer resolution,
  302. skipping blocks which are surrounded by the same color. Solid-guessing
  303. can guess wrong, but it sure guesses quickly!  Note: these options,
  304. along with the Boundary-Tracing alternative, can now also be selected
  305. using the "X" options screen.  Boundary Tracing, which only works
  306. with fractal types (such as the Mandelbrot set, but not the Newton
  307. type) that do not contain "islands" of colors, finds a color "boundary",
  308. traces it around the screen, and then "blits" in the color over the
  309. enclosed area.
  310.  
  311. <B>
  312. Create a batch file, FRABATCH.BAT, that will start FRACTINT with the
  313. command-line arguments needed to draw the current image. If
  314. FRABATCH.BAT already exists, a new line is appended to it.
  315.  
  316. <T>
  317. Select a fractal type. Move the cursor to your choice and hit <Enter>.
  318. You will be prompted for any parameters that type may require.
  319.  
  320. <X>
  321. Select any number of eXtended options. Brings up a full-screen menu of
  322. options, any number of which you can change at will.  This list currently
  323. includes the F(loating point algorithm) toggle, the image generation
  324. algorithm (passes = 1, 2, solid-guessing, or boundary tracing), the
  325. "maxiter=" iteration maximum, the "inside=" and "outside=" colors, the
  326. Logarithmic Palettes option, the Biomorph and Decomposition
  327. algorithms, the "sound=" option, and the "warn=" option.
  328.  
  329. <E>
  330. Call up an editor that modifies, saves and restores various parameters.
  331. Currently you can change the coefficients used in plotting the Barnsley 
  332. IFS fractal types or the 3D transformations used with the "Lorenz3D" 
  333. and "IFS3D" fractal types, including the selection of "funny glasses"
  334. red/blue 3D. 
  335.  
  336. <F>
  337. Toggles the use of floating-point algorithms. Their use is shown on the
  338. <Tab> status screen.   (Note: the floating point algorithms option can
  339. now also be turned on and off using the "X" options screen.)
  340.  
  341. <I>
  342. Apply the inversion process (Sec. 3) and redraw the screen. Not appli-
  343. cable to all fractal types.
  344.  
  345. <N> or <L>
  346. Select normal (the default) or logarithmic palette mapping and redraw
  347. the screen. (See Sec. 3 for details.)   (Note: the Logarithmic palette
  348. option can now also be turned on and off using the "X" options screen.)
  349.  
  350. <Q>
  351. Apply the quaternary or binary decomposition coloring scheme (see Sec.
  352. 3) and redraw the screen. Not applicable to all fractal types.
  353. (Note that the decomposition scheme can now select 8, 16, 32, 64, 128,
  354. and 256-way decomposition, but we're stuck with <Q> for Quaternary.)
  355. (Note: the Decomposition option can now also be turned on and off
  356. using the "X" options screen.)
  357.  
  358. <O> (the letter, not the number)
  359. If pressed while an image is being generated, toggle the display of
  360. intermediate results -- the "orbits" FRACTINT uses as it calculates
  361. values for each point. Slows the display a bit, but shows you how
  362. clever the program is being behind the scenes. (See "A Little Code" in
  363. Sec. 6.)
  364.  
  365. <Insert>
  366. Restart at the "credits" screen
  367.  
  368. <D>
  369. Shell to DOS. Return to FRACTINT by entering "exit" at a DOS prompt.
  370.  
  371. <Esc> or <Delete>
  372. Exit FRACTINT and return to DOS.
  373.  
  374.  
  375.                        Color Commands
  376.  
  377. The color-cycling commands are available ONLY for VGA adapters and EGA
  378. adapters in 640x350x16 mode. Some keys have different functions specif-
  379. ic to this mode.
  380.  
  381. Note that the palette colors available on an EGA adapter (16 colors at
  382. a time out of a palette of 64) are limited compared to those of VGA,
  383. super-VGA, and MCGA (16 or 256 colors at a time out of a palette of
  384. 262,144). So color-cycling in general looks a LOT better in the latter
  385. modes. Also, because of the EGA palette restrictions, some commands are
  386. not available with EGA adapters.
  387.  
  388. <+> or <->
  389. Switch to color-command mode and begin cycling the palette by shifting
  390. each color to the next "contour."
  391.  
  392. <C>
  393. Switch to color-command mode but do not start cycling. The normally
  394. black "overscan" border of the screen changes to white as a reminder
  395. that you are in this command mode.
  396.  
  397. <H> or <?>
  398. Bring up a HELP screen with commands specific to color command mode.
  399. ESCAPE exits.
  400.  
  401. <+> or cursor->, <-> or cursor<-
  402. Reverse the cycling direction "out" or "in."
  403.  
  404. Cursor up/down
  405. Increase/decrease the cycling speed. High speeds may cause a harmless
  406. flicker at the top of the screen.
  407.  
  408. <F2> through <F10>
  409. Switches from simple rotation to color selection using randomly-gener-
  410. ated color bands of short (F2) to long (F10) duration.
  411.  
  412. <1> through <9>
  413. Causes the screen to be updated every 'n' color cycles (the default is
  414. 1). Handy for slower computers.
  415.  
  416. <Enter>
  417. Randomly selects a function key (F2 through F10) and then updates ALL
  418. the screen colors prior to displaying them for instant, random colors.
  419. Hit this over and over again (we do).
  420.  
  421. <Spacebar>
  422. Pause cycling with white overscan area. Cycling restarts with any
  423. command key (including another spacebar) -- or you can use any non-
  424. command key to exit color-command mode so you can (S)ave the image.
  425.  
  426. <Shift><F1>-<F10>
  427. Pause cycling and reset the palette to a preset two-color "straight"
  428. assignment, such as a spread from black to white. (Not for EGA)
  429.  
  430. <Ctrl><F1>-<F10>
  431. Pause and use a two-color cyclical assignment, e.g. red->yellow->red
  432. (not for EGA).
  433.  
  434. <Alt><F1>-<F10>
  435. Pause and use a 3-color cyclical assignment, e.g. green->white->blue
  436. (not for EGA).
  437.  
  438. <R>, <G>, <B>
  439. Pause and increase the red, green, or blue component of all colors by a
  440. small amount (not for EGA). Note the case distinction of this vs:
  441.  
  442. <r>, <g>, <b>
  443. Pause and decrease the red, green, or blue component of all colors by a
  444. small amount (not for EGA).
  445.  
  446. <D> or <A>
  447. Pause and load an external color map from the files DEFAULT.MAP or
  448. ALTERN.MAP, supplied with the program.
  449.  
  450. <M>
  451. Pause and prompt for the filename of an external color map. Several
  452. others are supplied with the program. (The .MAP extension is assumed;
  453. see Sec. 4 for details on creating your own map files.)
  454.  
  455. <S>
  456. Pause, prompt for a filename, and save the current palette to the named
  457. file (.MAP assumed).
  458.  
  459. <X>
  460. Enters the "Cross-Hair" Palette manipulation sub-mode, described below,
  461. in which you can modify your image one color (palette) at a time
  462. (not for EGA).
  463.  
  464. Any other key terminates the color-cycling process (you can always
  465. return to it with another <C>, <+> or <->) and returns to the main
  466. command mode.
  467.  
  468.  
  469.         Cross-Hair Mode (a Sub-Mode of Color-Cycling)
  470.  
  471. This mode is entered from the main color-cycling mode by pressing the
  472. "X" key, which brings up a "Cross-Hair" cursor with which you point
  473. to a pixel using the particular color palette you wish to modify.
  474. Unlike the main color-cycling level, where you are modifying all of the
  475. colors at once, Cross-Hair mode modifies only one palette at a time.
  476. This feature is currently available only on VGA adapters.
  477.  
  478. <Cursor ("arrow") Keys>
  479. Move the cross-hair cursor around the screen.  The Control-Cursor keys
  480. move the cursor around faster.  A mouse can also be used to move around,
  481. in which case holding down the right button slows down cursor movement.
  482. The palette value of the pixel in the middle of your cross-hair cursor
  483. is the palette value that you will be manipulating.
  484.  
  485. <R>, <G>, <B>
  486. Increase the red, green, or blue component of your palette color by a
  487. small amount. Note the case distinction of this vs:
  488.  
  489. <r>, <g>, <b>
  490. Decrease the red, green, or blue component of your palette color by a
  491. small amount.
  492.  
  493. <+>, <->
  494. Changes the RGB components of the palette you are pointing at to those
  495. of the next higher (or lower, for the <-> key) palette value.  Useful for
  496. "erasing" bands of color.
  497.  
  498. <Page Up>, <Page Down>
  499. Change the palette value of the cross-hair cursor to the next higher (or
  500. lower) palette value.  A handy feature when the cross-hair cursor gets
  501. "lost" in the background.  Holding down the left mouse button and moving
  502. the mouse forward and backward has the same effect.
  503.  
  504. <ENTER>
  505. Does nothing at all.  Added only to prevent you from accidentally 
  506. exiting cross-hair mode by pressing both mouse buttons.
  507.  
  508. Any other key terminates Cross-Hair sub-mode and returns to the main
  509. Color-Cycling command mode.
  510.  
  511.  
  512.                 Save/Restore/Print Commands
  513.  
  514. <S>
  515. Save the screen contents to disk. Progress is marked by colored lines
  516. moving down the screen's edges. The default filename is FRACT001.FRA;
  517. multiple saves in a session are automatically incremented 002, 003...
  518. If you have files left over from previous sessions and want the program
  519. to keep incrementing rather than starting at 001 again and overwriting,
  520. see Sec. 3 for the "WARN=yes" argument (or set it with the "X" option
  521. screen).
  522.  
  523. <R>
  524. Restore an image previously saved with <S>, or a .GIF image (See Sec.
  525. 4). You are prompted for the filename, .FRA assumed.
  526.  
  527. <P>
  528. Print the current fractal image on your (Laserjet or Epson-compatible)
  529. printer. See Sec. 3 for how to let FRACTINT know about your printer
  530. setup.
  531.  
  532.  
  533.                               "3D" Commands
  534.  
  535. <3>
  536. Restore a saved image as a 3D "landscape", translating its color
  537. information into "height". You will be prompted for all KINDS of
  538. options; see "3D Images" in Sec. 3 for details.
  539.  
  540. <O>
  541. Restore in 3D and overlay the result on the current screen. (This 
  542. only works when there's a completed on screen, so it can't be 
  543. confused with the <O>-for-orbits toggle that ONLY operates WHILE a 
  544. fractal is being generated.)
  545.  
  546.  
  547.                               HINTS
  548.  
  549. Remember, you do NOT have to wait for the program to finish a full
  550. screen display before entering a command. If you see an interesting
  551. spot you want to zoom in on while the screen is half-done, don't wait -
  552. - do it! If you think after seeing the first few lines that another
  553. video mode would look better, go ahead -- FRACTINT will shift modes and
  554. start the re-draw at once. When it finishes a display, it beeps and
  555. waits for your next command.
  556.  
  557. In general, the most interesting areas are the "border" areas where the
  558. colors are changing rapidly. Zoom in on them for the best results. The
  559. first Mandelbrot-set (default) fractal image has a large, solid-colored
  560. interior that is the slowest to display; there's nothing to be seen by
  561. zooming there.
  562.  
  563. Plotting time is directly proportional to the number of pixels in a
  564. screen, and hence increases with the resolution of the video mode.
  565. After you get used to the first "zoom levels," you may want to start in
  566. a low-resolution mode for quick progress, and switch to a higher-
  567. resolution mode when things get interesting. Plotting time also varies
  568. with the maximum iteration setting, the fractal type, and your choice
  569. of drawing mode. Solid-guessing (the default) is fastest, but it can be
  570. wrong: perfectionists will want to use dual-pass mode (its first-pass
  571. preview is handy if you might zoom pre-emptively) or single-pass mode.
  572.  
  573. When you start systematically exploring, you can save time (and hey,
  574. every little bit helps -- these "objects" are INFINITE, remember!) by
  575. <S>aving your last screen in a session to a file, and then going
  576. straight to it the next time with FRACTINT FRACTxxx (the .FRA
  577. extension is assumed). Or you could simply hit <B> to create a batch
  578. file with the "recipe" for a given image, and next time start with
  579. FRABATCH to re-plot it. See Sec. 4 for more on batch mode and the
  580. command-line arguments the <B> command writes.
  581.  
  582.  
  583.  
  584. 2. FRACTAL TYPES
  585.  
  586. This section is intended only as a quick introduction to the types;
  587. more detail on the mathematics of types other than the Mandelbrot set
  588. can be found in Appendix A, and some notes on how FRACTINT calculates
  589. them in Sec. 6.
  590.  
  591. FRACTINT starts by default with the Mandelbrot set. You can change that
  592. by firing it up with the command-line argument "TYPE=" followed by one
  593. of the names in parentheses below, or within the program by hitting <T>
  594. and typing in the name. If parameters are needed, you will be prompted
  595. for them.
  596.  
  597. In the text that follows, due to the limitations of the ASCII character
  598. set, "a*b" means "a times b", and "a^b" means "a to the power b".
  599.  
  600.  
  601. THE MANDELBROT SET
  602.  
  603. This set is the classic: the only one implemented in many plotting
  604. programs, and the source of most of the printed fractal images pub-
  605. lished in recent years. Like most of the other types in FRACTINT, it is
  606. simply a graph: the x (horizontal) and y (vertical) coordinate axes
  607. represent ranges of two independent quantities, with various colors
  608. used to symbolize levels of a third quantity which depends on the first
  609. two. So far, so good: basic analytic geometry.
  610.  
  611. Now things get a bit hairier. The x axis is ordinary, vanilla real
  612. numbers. The y axis is an imaginary number, i.e. a real number times i,
  613. where i is the square root of -1. Every point on the plane -- in this
  614. case, your PC's display screen -- represents a complex number of the
  615. form:
  616.  
  617. x-coordinate + i * y-coordinate
  618.  
  619. If your math training stopped before you got to imaginary and complex
  620. numbers, this is not the place to catch up. Suffice it to say that they
  621. are just as "real" as the numbers you count fingers with (they're used
  622. every day by electrical engineers) and they can undergo the same kinds
  623. of algebraic operations.
  624.  
  625. OK, now pick any complex number -- any point on the complex plane --
  626. and call it C, a constant. Pick another, this time one which can vary,
  627. and call it Z. Starting with Z=0 (i.e., at the origin, where the real
  628. and imaginary axes cross), calculate the value of the expression
  629.  
  630. Z^2 + C
  631.  
  632. Take the result, make it the new value of the variable Z, and calculate
  633. again. Take that result, make it Z, and do it again, and so on: in
  634. mathematical terms, iterate the function Z(n+1) = Z(n)^2 + C. For
  635. certain values of C, the result "levels off" after a while. For all
  636. others, it grows without limit. The Mandelbrot set you see at the start
  637. -- the solid-colored lake (blue by default), the blue circles sprouting
  638. from it, and indeed every point of that color -- is the set of all
  639. points C for which the value of Z is less than 2 after 150 iterations
  640. (default setting). All the surrounding "contours" of other colors
  641. represent points for which Z exceeds 2 after 149 iterations (the
  642. contour closest to the M-set itself), 148 iterations, (the next one
  643. out), and so on.
  644.  
  645. Some features of interest:
  646.  
  647. 1. Use the > key to increase the number of iterations. Notice that the
  648. boundary of the M-set becomes more and more convoluted (the technical
  649. terms are "wiggly," "squiggly," and "utterly bizarre") as the Z-values
  650. for points that were still within the set after 150 iterations turn out
  651. to exceed 2 after 200, 500, or 1200. In fact, it can be proven that the
  652. true boundary is infinitely long: detail without limit.
  653.  
  654. 2. Although there appear to be isolated "islands" of blue, zoom in --
  655. that is, plot for a smaller range of coordinates to show more detail --
  656. and you'll see that there are fine "causeways" of blue connecting them
  657. to the main set. As you zoomed, smaller islands became visible; the
  658. same is true for them. In fact, there are no isolated points in the M-
  659. set: it is "connected" in a strict mathematical sense.
  660.  
  661. 3. The upper and lower halves of the first image are symmetric (a fact
  662. that FRACTINT makes use of here and in some other fractal types to
  663. speed plotting). But notice that the same general features --lobed
  664. discs, spirals, starbursts -- tend to repeat themselves
  665. (although never exactly) at smaller and smaller scales, so that it can
  666. be impossible to judge by eye the scale of a given image.
  667.  
  668. 4. In a sense, the contour colors are window-dressing: mathematically,
  669. it is the properties of the M-set itself that are interesting, and no
  670. information about it would be lost if all points outside the set were
  671. assigned the same color. If you're a serious, no-nonsense type, you may
  672. want to cycle the colors just once to see the kind of silliness that
  673. other people enjoy, and then never do it again. Go ahead. Just once,
  674. now. We trust you.
  675.  
  676.  
  677. JULIA SETS
  678.  
  679. These sets were named for mathematician Gaston Julia, and can be
  680. generated by a simple change in the iteration process described above.
  681. Start with a specified value of C, "C-real + i * C-imaginary"; use as
  682. the initial value of Z "x-coordinate + i * y-coordinate"; and repeat
  683. the same iteration, Z(n+1) = Z(n)^2 + C.
  684.  
  685. There is a Julia set corresponding to every point on the complex
  686. plane -- an infinite number of Julia sets. But the most visually
  687. interesting tend to be found for the same C values where the M-set
  688. image is busiest, i.e. points just outside the boundary. Go too far
  689. inside, and the corresponding Julia set is a circle; go too far out-
  690. side, and it breaks up into scattered points. In fact, all Julia sets
  691. for C within the M-set share the "connected" property of the M-set, and
  692. all those for C outside lack it.
  693.  
  694. FRACTINT's spacebar toggle lets you "flip" between any view of the M-
  695. set and the Julia set for the point C at the center of that screen. You
  696. can then toggle back, or zoom your way into the Julia set for a while
  697. and then return to the M-set. So if the infinite complexity of the M-
  698. set palls, remember: each of its infinite points opens up a whole new
  699. Julia set.
  700.  
  701. Historically, the Julia sets came first: it was while looking at the M-
  702. set as an "index" of all the Julia sets' origins that Mandelbrot
  703. noticed its properties.
  704.  
  705. NOTE: if you use the "PARAMS=" argument to warp the M-set by starting
  706. with an initial value of Z other than 0, the M-set/J-sets correspon-
  707. dence breaks down and the spacebar toggle no longer works.
  708.  
  709.  
  710. NEWTON DOMAINS OF ATTRACTION (type=newtbasin)
  711.  
  712. The Newton formula is an algorithm used to find the roots of polynomial
  713. equations by successive "guesses" that converge on the correct value as
  714. you feed the results of each approximation back into the formula. It
  715. works very well -- unless you are unlucky enough to pick a value that
  716. is on a line BETWEEN two actual roots. In that case, the sequence
  717. explodes into chaos, with results that diverge more and more wildly as
  718. you continue the iteration.
  719.  
  720. This fractal type shows the results for the polynomial Z^n - 1, which
  721. has n roots in the complex plane. Use the <T>ype command and enter
  722. "newtbasin" in response to the prompt. You will be asked for a parame-
  723. ter, the "order" of the equation (an integer from 3 through 10 -- 3 for
  724. x^3 - 1, 7 for x^7-1, etc.).
  725.  
  726. The striped coloring of the plot shows the "basins of attraction" for
  727. each root of the polynomial -- i.e., an initial guess within any area
  728. of a given color would lead you to one of the roots. As you can see,
  729. things get a bit weird along certain radial lines or "spokes," those
  730. being the lines between actual roots. By "weird," we mean infinitely
  731. complex in the good old fractal sense. Zoom in and see for yourself.
  732.  
  733. This fractal type is symmetric about the origin, with the number of
  734. "spokes" depending on the order you select. It uses floating-point
  735. math if you have an FPU, or a somewhat slower integer algorithm if
  736. you don't have one.
  737.  
  738. NEWTON (type=newton)
  739.  
  740. The generating formula here is identical to that for newtbasin, but the
  741. coloring scheme is different. Pixels are colored not according to the
  742. root that would be "converged on" if you started using Newton's formula
  743. from that point, but according to the iteration when the value is close
  744. to a root.  For example, if the calculations for a particular pixel
  745. converge to the 7th root on the 23rd iteration, NEWTBASIN will color
  746. that pixel using color #7, but NEWTON will color it using color #23.
  747.  
  748. If you have a 256-color mode, use it: the effects can be much livelier
  749. than those you get with type=newtbasin, and color cycling becomes,
  750. like, downright cosmic. If your "corners" choice is symmetrical,
  751. FRACTINT exploits the symmetry for faster display. There is symmetry in
  752. newtbasin, too, but the current version of the software isn't smart
  753. enough to exploit it.
  754.  
  755. The applicable "params=" values are the same as newtbasin. Try
  756. "params=4." Other values are 3 through 10. 8 has twice the symmetry and
  757. is faster. As with newtbasin, an FPU helps.
  758.  
  759. COMPLEX NEWTON (type=complexnewton and type=complexbasin)
  760.  
  761. Well, hey, "Z^n - 1" is so boring when you can use "Z^a - b" where
  762. "a" and "b" are complex numbers!  The new "complexnewton" and
  763. "complexbasin" fractal types are just the old "newton" and "newtbasin"
  764. fractal types with this little added twist.  When you select these
  765. fractal types, you are prompted for four values (the real and imaginary
  766. portions of "a" and "b").  If "a" has a complex portion, the fractal
  767. has a discontinuity along the negative axis - relax, we finally figured
  768. out that it's *supposed* to be there!
  769.  
  770.  
  771. LAMBDA SETS (type=lambda)
  772.  
  773. This type calculates the Julia set of the formula lambda*Z*(1-Z). That
  774. is, the value Z[0] is initialized with the value corresponding to each
  775. pixel position, and the formula iterated. The pixel is colored accord-
  776. ing to the iteration when the sum of the squares of the real and
  777. imaginary parts exceeds 4. See this space in future versions for a
  778. profound discussion of the physical significance of this formula, if we
  779. ever figure it out!
  780.  
  781. Two parameters, the real and imaginary parts of lambda, are required.
  782. Try 0 and 1 to see the classical fractal "dragon". Then try 0.2 and 1
  783. for a lot more detail to zoom in on.
  784.  
  785.  
  786. PLASMA CLOUDS (type=plasma)
  787.  
  788. Plasma clouds ARE real live fractals , even though we didn't know it at
  789. first.  They are generated by a recursive algorithm that randomly picks
  790. colors of the corner of a rectangle, and then continues recursively
  791. quartering previous rectangles. Random colors are averaged with those
  792. of the outer rectangles so that small neighborhoods do not show much
  793. change, for a smoothed-out, cloud-like effect. The more colors your
  794. video mode supports, the better.  The result, believe it or not, is
  795. a fractal landscape viewed as a contour map, with colors indicating
  796. constant  elevation.  To see this, save and view with the "3" command
  797. (see  section on 3D), and your "cloud" will be converted to a mountain!
  798.  
  799.  
  800. You've GOT to try palette cycling on these (hit "+" or "-"). If you
  801. haven't been hypnotized by the drawing process, the writhing colors
  802. will do it for sure. We have now implemented subliminal messages to
  803. exploit the user's vulnerable state; their content varies with your
  804. bank balance, politics, gender, accessibility to a FRACTINT
  805. programmer, and so on. A free copy of Microsoft C to the first person
  806. who spots them.
  807.  
  808. This type accepts a single parameter, which determines how abruptly the
  809. colors change. A value of .5 yields bland clouds, while 50 yields very
  810. grainy ones. The default value is 2. Zooming is ignored, as each
  811. plasma-cloud screen is generated randomly.
  812.  
  813. The algorithm is based on the Pascal program distributed by Bret Mulvey
  814. as PLASMA.ARC. We have ported it to C and integrated it with FRACTINT's
  815. graphics and animation facilities. This implementation does not use
  816. floating-point math.
  817.  
  818. Saved plasma-cloud screens are EXCELLENT starting images for fractal
  819. "landscapes" created with the "3D" options.
  820.  
  821.  
  822. LAMBDA*SINE/COSINE/SINH/COSH/EXPONENT (type=lambdasine, 
  823. lambdacos, lambdasinh, lambdacos, lambdaexp)
  824.  
  825. These types calculate the Julia set of the formulas lambda*sine(Z), 
  826. lambda*cosine(Z), lambda*sinh(Z), lambda*cosh(Z), or 
  827. lambda*exp(Z), where lambda and Z are both complex. Two values, 
  828. the real and imaginary parts of lambda, should be given in the 
  829. "params=" option.  For the feathery, nested spirals of 
  830. LambdaSines and the frost-on-glass patterns of LambdaCosines, 
  831. make the real part = 1, and try values for the imaginary part 
  832. ranging from 0.1 to 0.4 (hint: values near 0.4 have the best 
  833. patterns). In these ranges the Julia set "explodes". For the 
  834. tongues and blobs of LambdaExponents, try a real part of 0.379 
  835. and an imaginary part of 0.479.
  836.  
  837. A co-processor used to be almost mandatory: each 
  838. LambdaSine/Cosine iteration calculates a hyperbolic sine, 
  839. hyperbolic cosine, a sine, and a cosine (the LambdaExponent 
  840. iteration "only" requires an exponent, sine, and cosine 
  841. operation)!  However, FRACTINT now computes these transcendental 
  842. functions with fast integer math. In a few cases the fast math is 
  843. less accurate, so we have kept the old slow floating point code.
  844. To use the old code, invoke with the float=yes option, and, if 
  845. you DON'T have a co-processor, go on a LONG vacation!
  846.  
  847.  
  848. MANDEL*SINE/COSINE/SINH/COSH/EXPONENT (type=mandelsine, 
  849. mandelcos, mandelsinh, mandelcosh, mandelexp)
  850.  
  851. These are "pseudo-Mandelbrot" mappings for the 
  852. LambdaSine/Cos/Sinh/Cosh/Exp Julia functions. They map to their 
  853. corresponding Julia sets via the spacebar command in exactly the 
  854. same fashion as the original M/J sets.  In general, they are 
  855. interesting mainly because of that property (the MandelExp set in 
  856. particular is rather boring). Generate the appropriate 
  857. "Mandeltrig" set, zoom on a likely spot where the colors are 
  858. changing rapidly, and hit the space-bar key to plot the Julia set 
  859. for that particular point.
  860.  
  861. Try "FRACTINT TYPE=MANDELCOS CORNERS=4.68/4.76/-.03/.03" for a
  862. graphic demonstration that we're not taking Mandelbrot's name in vain
  863. here. We didn't even know these little buggers were here until Mark
  864. Peterson found this a few hours before the version incorporating
  865. Mandeltrigs was released.
  866.  
  867.  
  868.  
  869. BARNSLEY MANDELBROT/JULIA SETS (type=barnsleym1/m2/j1/j2/m3/j3)
  870.  
  871. Michael Barnsley has written a fascinating college-level text,
  872. "Fractals Everywhere," on fractal geometry and its graphic applica-
  873. tions. (See the bibliography, App. D.) In it, he applies the principle
  874. of the M and J sets to more general functions of two complex variables.
  875.  
  876. We have incorporated three of Barnsley's examples in FRACTINT. Their
  877. appearance suggests polarized-light microphotographs of minerals, with
  878. patterns that are less organic and more crystalline than those of the
  879. M/J sets. Each example has both a "Mandelbrot" and a "Julia" type.
  880. Toggle between them using the space bar.
  881.  
  882. The parameters have the same meaning as they do for the "regular"
  883. Mandelbrot and Julia. For types M1, M2, and M3, they are used to "warp"
  884. the image by setting the initial value of Z. For the types J1 through
  885. J3, they are the values of C in the generating formulas, found in App. A.
  886.  
  887. Be sure to try the <O>rbit function while plotting these types.
  888.  
  889.  
  890. BARNSLEY IFS FRACTALS (type=ifs, ifs3d)
  891.  
  892. One of the most remarkable spin-offs of fractal geometry is the ability
  893. to "encode" realistic images in very small sets of numbers -- parame-
  894. ters for a set of functions that map a region of two-dimensional space
  895. onto itself. In principle (and increasingly in practice), a scene of
  896. any level of complexity and detail can be stored as a handful of
  897. numbers, achieving amazing "compression" ratios... how about a super-
  898. VGA image of a forest, more than 300,000 pixels at eight bits apiece,
  899. from a 1-KB "seed" file?
  900.  
  901. Again, Michael Barnsley and his co-workers at the Georgia Institute of
  902. Technology are to be thanked for pushing the development of these
  903. iterated function systems (IFS).
  904.  
  905. Invoking FRACTINT with "TYPE=ifs" defaults to an IFS "fern". Other IFS
  906. images can be created via the FERN, TRIANGLE and TREE files included
  907. with FRACTINT, or from user-written files with the default extension
  908. .IFS. Use the command-line argument "IFS=filename" or the main-menu <I>
  909. command to use or manipulate one of these files. Specify whether 2D or
  910. "3D" if you have not already chosen an IFS type. You will then be asked
  911. to pick which function to edit. Hitting <Enter> leaves values
  912. unchanged.
  913.  
  914. Each line in an IFS code file contains the parameters for one of the
  915. generating functions, e.g. in FERN.IFS:
  916.  
  917.   a    b     c    d    e    f    p
  918. ___________________________________
  919.   0    0     0  .16    0    0   .01
  920. .85   .04 -.04  .85    0  1.6   .85
  921. .2   -.26  .23  .22    0  1.6   .07
  922. -.15  .28  .26  .24    0  .44   .07
  923.  
  924. The "p" values are the probabilities assigned to each function (how
  925. often it is used), which add up to one. FRACTINT supports up to 32
  926. functions, although usually three or four are enough.
  927.  
  928. Note that some Barnsley IFS values generate images quite a bit smaller
  929. than the initial (default) screen. Just bring up the zoom box, center
  930. it on the small image, and hit the ENTER key to get a full-screen
  931. image.
  932.  
  933. In order to fully appreciate the 3D fern, since your monitor is presum-
  934. ably 2D, we have added rotation, translation, and perspective capabili-
  935. ties. These share values with the same variables used in FRACTINT's
  936. other 3D facilities; for their meaning see "3D Images", farther on in
  937. this section. You can enter these values from the command line using:
  938.  
  939. rotation=xrot/yrot/zrot       (try 30/30/30)
  940. shift=xshift/yshift           (shifts BEFORE applying perspective!)  
  941. perspective=viewerposition    (try 200)
  942.  
  943. Alternatively, entering "e" (for edit) from main screen or  entering 
  944. a "t" (for "transformations") from the IFS 3D codes-editing screen, will 
  945. allow you to edit these values. The defaults are the same as for regular 
  946. 3D, and are not always optimum for the 3D fern. Try rotation=30/30/30. 
  947. Note that applying shift when using perspective changes the picture -- 
  948. your "point of view" is moved. 
  949.  
  950. A truly wild variation of 3D may be seen by entering "2" for the stereo 
  951. mode, putting on red/blue "funny glasses", and watching the fern develop
  952. with full depth perception right there before your eyes!
  953.  
  954. This feature is STILL dedicated to Bruce Goren, as a bribe to get him to 
  955. send us MORE knockout stereo slides of 3D ferns, now that we have made it 
  956. so easy!
  957.  
  958.  
  959. SIERPINSKI GASKET (type=sierpinski)
  960.  
  961. Another pre-Mandelbrot classic, this one found by W. Sierpinski around
  962. World War I. It is generated by dividing a triangle into four congruent
  963. smaller triangles, doing the same to each of them, and so on, yea, even
  964. unto infinity. (Notice how hard we try to avoid reiterating "iterat-
  965. ing"?)
  966.  
  967. If you think of the interior triangles as "holes", they occupy more and
  968. more of the total area, while the "solid" portion becomes as hopelessly
  969. fragile as that gasket you HAD to remove without damaging it -- you
  970. remember, that Sunday afternoon when all the parts stores were closed?
  971. There's a three-dimensional equivalent using nested tetrahedrons
  972. instead of triangles, but it generates too much pyramid power to be
  973. safely unleashed yet.
  974.  
  975. There are no parameters for this type. We were able to implement it
  976. with integer math routines, so it runs fairly quickly even without an
  977. FPU.
  978.  
  979.  
  980. QUARTIC MANDELBROT AND JULIA (type=mandel4, julia4)
  981.  
  982. These fractal types are the moral equivalent of the original M and J
  983. sets, except that they use the formula Z(n+1) = Z(n)^4 + C, which adds
  984. additional pseudo-symmetries to the plots. The "Mandel4" set maps to
  985. the "Julia4" set via -- surprise! -- the spacebar toggle. The M4 set is
  986. kind of boring at first (the area between the "inside" and the "out-
  987. side" of the set is pretty thin, and it tends to take a few zooms to
  988. get to any interesting sections), but it looks nice once you get there.
  989. The Julia sets look nice right from the start.
  990.  
  991. Other powers, like Z(n)^3 or Z(n)^7, work in exactly the same fashion.
  992. We used this one only because we're lazy, and Z(n)^4 = (Z(n)^2)^2.
  993.  
  994.  
  995. DISTANCE ESTIMATOR MANDELBROT AND JULIA (type=demm, demj)
  996.  
  997. These are Phil Wilson's implementation of an alternate method for the M
  998. and J sets, based on work by mathematician John Milnor and described in
  999. "The Science of Fractal Images", p. 198. They produce more evenly
  1000. spaced contours; while they take full advantage of your color palette,
  1001. one of their best uses is in preparing monochrome images for a printer.
  1002. Using the 1600x1200x2 disk-video mode and an HP LaserJet, we have
  1003. produced pictures of quality equivalent to the black and white illus-
  1004. trations of the M-set in "The Beauty of Fractals."
  1005.  
  1006. Unfortunately, these images can take many hours to calculate even on a
  1007. fast machine with a coprocessor. One way of dealing with this is to use
  1008. the fast type=mandel and type=julia modes to find interesting areas.
  1009. Frame these nicely, then hit B to save the coordinates to FRABATCH.BAT.
  1010. Edit the batch file, changing TYPE to "demm" or "demj", MODE to a high-
  1011. resolution monochrome disk-video mode, and MAXITER to 1000 or so. Run
  1012. the batch file when you won't be needing your machine (over the week-
  1013. end?) and print the resulting .FRA file at your convenience.
  1014.  
  1015.  
  1016. PICKOVER MANDELBROT/JULIA TYPES (type=mansinzsqrd/julsinzsqrd,
  1017.    manzpowr/julzpowr,manzzpwr/julzzpwr, mansinexp/julsinexp)
  1018.  
  1019. These types have been explored by Clifford A. Pickover, of the IBM Thomas 
  1020. J. Watson Research center. As implemented in FRACTINT, they are regular 
  1021. Mandelbrot/Julia set pairs that may be plotted with or without the
  1022. "biomorph" option Pickover used to create organic-looking beasties (see
  1023. below). These types are produced with formulas built from the functions
  1024. z^z, z^n, sin(z), and e^z for complex z. Types with "power" or "pwr" 
  1025. in their name have an exponent value as a third parameter. For 
  1026. example, type=manzpower params=0/0/2 is our old friend the 
  1027. classical Mandelbrot, and type=manzpower params=0/0/4 is the 
  1028. Quartic Mandelbrot. Other values of the exponent give still other 
  1029. fractals.  Since these WERE the original "biomorph" types, we 
  1030. should give an example.  Try:
  1031.  
  1032.     FRACTINT type=mansinsqrd biomorph=0 corners=-8/8/-6/6  
  1033.  
  1034. to see a big biomorph digesting little biomorphs!
  1035.  
  1036.  
  1037. PICKOVER POPCORN (type=popcorn)
  1038.  
  1039. Here is another Pickover idea. This one computes and plots the 
  1040. orbits of the dynamic system defined by:
  1041.  
  1042.          x(n+1) = x(n) - h*sin(y(n)+tan(3*y(n))
  1043.          y(n+1) = y(n) - h*sin(x(n)+tan(3*x(n))
  1044.  
  1045. with the initializers x(0) and y(0) equal to ALL the complex 
  1046. values within the "corners" values, and h=.01.  ALL these orbits 
  1047. are superimposed, resulting in "popcorn" effect. As a bonus, for 
  1048. reasons known only to the programmers, give the option 
  1049. "symmetry=none" and you will see the Julia set generated by these 
  1050. same equations with the usual escape-time coloring. Turn on orbit 
  1051. viewing with the "O" command, and as you watch the orbit pattern 
  1052. you may get some insite as to where the popcorn comes from. You 
  1053. may want to use a maxiter value less than normal - Pickover 
  1054. recommends a value of 50.
  1055.  
  1056. All these are generated by equations are of the form z(k+1) = f(z(k),c),
  1057. where the function orbit is the sequence z(0), z(1), ..., and the variable 
  1058. c is a complex parameter of the equation. The value c is fixed for Julia
  1059. sets and is equal to the first two parameters entered with the "params=
  1060. Creal/Cimag" command. The initial orbit value z(0) is the complex number
  1061. corresponding to the screen pixel. For Mandelbrot sets, the parameter c is
  1062. the complex number corresponding to the screen pixel. The value z(0) is c
  1063. plus a perturbation equal to the values of the first two 
  1064. params=perturbx/perturby values. 
  1065.  
  1066. Some equations have an additional parameter n, which is generally 
  1067. an exponent. This value is entered as the third params= value 
  1068. for both Julia and Mandelbrot sets. The variables x and y refer 
  1069. to the real and imaginary parts of z; similarly, cx and cy are the 
  1070. real and imaginary parts of the parameter c and fx(z) and fy(z) 
  1071. are the real and imaginary parts of f(z). The variable c is 
  1072. sometimes called lambda for historical reasons.
  1073.  
  1074.  
  1075. PETERSON VARIATIONS (type=marksmandel, marksjulia, mandellambda, 
  1076.                           cmplxmarksmand, cmplxmarksjul)
  1077.  
  1078. These fractal types are contributions of Mark Peterson. MarksMandel and
  1079. MarksJulia are two families of fractal types that are linked in the
  1080. same manner as the classic Mandelbrot/Julia sets: each MarksMandel set
  1081. can be considered as a mapping into the MarksJulia sets, and is linked
  1082. with the spacebar toggle. The basic equation for these sets is:
  1083.  
  1084.       Z(n+1) = ((lambda^n) * Z(n)^2) + lambda
  1085.  
  1086. where Z(0) = 0.0 and lambda is (x + iy) for MarksMandel. For
  1087. MarksJulia, Z(0) = (x + iy) and lambda is a constant (taken from the
  1088. MarksMandel spacebar toggle, if that method is used). The exponent is a
  1089. positive integer or a complex number. We call these "families" because 
  1090. each value of the exponent yields a different MarksMandel set, which turns 
  1091. out to be a kinda-polygon with (exponent+1) sides. The exponent value is the 
  1092. third parameter, after the "initialization warping" values. Typically one
  1093. would use null warping values, and specify the exponent with something
  1094. like "PARAMS=0/0/4", which creates an unwarped, pentagonal MarksMandel
  1095. set.
  1096.  
  1097. MandelLambda maps the lambda function in the same way that the M-set
  1098. maps J sets, and is linked to the lambda function with the spacebar
  1099. toggle.
  1100.  
  1101.  
  1102. UNITY (type=unity)
  1103.  
  1104. This Peterson variation began with curiosity about other "Newton-style"
  1105. approximation processes. A simple one,
  1106.  
  1107.    One = (x * x) + (y * y);
  1108.    y = (2 - One) * x;
  1109.    x = (2 - One) * y;
  1110.  
  1111. produces the fractal called Unity.
  1112.  
  1113. One of its interesting features is the "ghost lines." The iteration
  1114. loop bails out when it reaches the number 1 to within the resolution of
  1115. a screen pixel. When you zoom a section of the image, the bailout
  1116. criterion is adjusted, causing some lines to become thinner and others
  1117. thicker.
  1118.  
  1119. Only one line in Unity that forms a perfect circle: the one at a radius
  1120. of 1 from the origin. This line is actually infinitely thin. Zooming on
  1121. it reveals only a thinner line, up (down?) to the limit of accuracy for
  1122. the algorithm. The same thing happens with other lines in the fractal,
  1123. such as those around |x| = |y| = (1/2)^(1/2) = .7071
  1124.  
  1125. Try some other tortuous approximations using the TEST stub (see below)
  1126. and let us know what you come up with!
  1127.  
  1128.  
  1129. BIFURCATION (type=bifurcation)
  1130.  
  1131. The wonder of fractal geometry is that such complex forms can arise
  1132. from such simple generating processes. A parallel surprise has emerged
  1133. in the study of dynamical systems: that simple, deterministic equations
  1134. can yield chaotic behavior, in which the system never settles down to a
  1135. steady state or even a periodic loop. Often such systems behave normal-
  1136. ly up to a certain level of some controlling parameter, then go through
  1137. a transition in which there are two possible solutions, then four, and
  1138. finally a chaotic array of possibilities.
  1139.  
  1140. This emerged many years ago in biological models of population growth.
  1141. Consider a (highly over-simplified) model in which the rate of growth
  1142. is partly a function of the size of the current population:
  1143.  
  1144. New Population =  Growth Rate * Old Population * (1 - Old Population)
  1145.  
  1146. where population is normalized to be between 0 and 1. At growth rates
  1147. less than 200 percent, this model is stable: for any starting value,
  1148. after several generations the population settles down to a stable
  1149. level. But for rates over 200 percent, the equation's curve splits or
  1150. "bifurcates" into two discrete solutions, then four, and soon becomes
  1151. chaotic.
  1152.  
  1153. Type=bifurcation illustrates this model. (Although it's now considered
  1154. a poor one for real populations, it helped get people thinking about
  1155. chaotic systems.) The horizontal axis represents growth rates, from 190
  1156. percent (far left) to 400 percent; the vertical axis normalized popula-
  1157. tion values, from 0 to 4/3. Notice that within the chaotic region,
  1158. there are narrow bands where there is a small, odd number of stable
  1159. values. It turns out that the geometry of this branching is -- hot
  1160. damn! -- fractal; zoom in where changing pixel colors look suspicious,
  1161. and see for yourself.
  1162.  
  1163. The default display has been filtered by allowing the population to
  1164. settle from its initial value for 5000 cycles before plotting maxiter
  1165. population values. To override this filter value, specify a new (small-
  1166. er) one as the first "PARAMS=" value. "PARAMS=1" produces an unfiltered
  1167. map.
  1168.  
  1169.  
  1170. LORENZ ATTRACTORS (type=lorenz and type=lorenz3d)
  1171.  
  1172. The "Lorenz Attractor" is a "simple" set of three deterministic equations
  1173. developed by Edward Lorenz while studying the non-repeatability of
  1174. weather patterns.  The weather forecaster's basic problem is that even
  1175. very tiny changes in initial patterns ("the beating of a butterfly's
  1176. wings" - the official term is "sensitive dependence on initial conditions")
  1177. eventually reduces the best weather forecast to rubble.
  1178.  
  1179. The lorenz attractor is the plot of the orbit of a dynamic system 
  1180. consisting of three first order non-linear differential equations.  
  1181. The solution to the differential equation is vector-valued function of
  1182. one variable.  If you think of the variable as time, the solution traces an
  1183. orbit.  The orbit is made up of two spirals at an angle to each other in 
  1184. three dimensions. We change the orbit color as time goes on to add a little 
  1185. dazzle to the image.  The equations are:
  1186.  
  1187.                 dx/dt = -a*x + a*y
  1188.                 dy/dt =  b*x - y   -z*x
  1189.                 dz/dt = -c*z + x*y
  1190.  
  1191. We solve these differential equations approximately using a method known as
  1192. the first order taylor series.  Calculus teachers everywhere will kill us
  1193. for saying this, but you treat the notation for the derivative dx/dt as though
  1194. it really is a fraction, with "dx" the small change in x that happens when the
  1195. time changes "dt".  So multiply through the above equations by dt, and you
  1196. will have the change in the orbit for a small time step. We add these changes
  1197. to the old vector to get the new vector after one step. This gives us:
  1198.  
  1199.              xnew = x + (-a*x*dt) + (a*y*dt)
  1200.              ynew = y + (b*x*dt) - (y*dt) - (z*x*dt)
  1201.              znew = z + (-c*z*dt) + (x*y*dt)
  1202.  
  1203.              (default values: dt = .02, a = 5, b = 15, c = 1)
  1204.  
  1205. We connect the successive points with a line, project the resulting 3D orbit 
  1206. onto the screen, and voila! The Lorenz Attractor!
  1207.  
  1208. We have added two versions of the Lorenz Attractor.  "Type=lorenz"
  1209. is the Lorenz attractor as seen in everyday 2D.  "Type=lorenz3d"
  1210. is the same set of equations with the added twist that the results
  1211. are run through our perspective 3D routines, so that you get to view
  1212. it from different angles (you can modify your perspective "on the fly"
  1213. using the transformation option of the <E>ditor command.) If you set
  1214. the "stereo" option to "2", and have red/blue funny glasses on, you will
  1215. see the attractor orbit with depth perception.
  1216.  
  1217. Hint: the default perspective values (x = 60, y = 30, z = 0) aren't the 
  1218. best ones to use for fun Lorenz Attractor viewing.  Experiment a bit - 
  1219. start with rotation values of 0/0/0 and then change to 20/0/0 and 40/0/0 
  1220. to see the attractor from different angles.- and while you're at it, use a
  1221. non-zero perspective point Try 100 and see what happens when you get
  1222. *inside* the Lorenz orbits.  Here comes one - Duck!  While you are at it,
  1223. turn on the sound with the "X". This way you'll at least hear it coming!
  1224.  
  1225. Different Lorenz attractors can be created using different 
  1226. parameters. Four parameters are used. The first is the time-step (dt). 
  1227. The default value is .02. A smaller value makes the plotting go 
  1228. slower; a larger value is faster but rougher. A line is drawn to 
  1229. connect successive orbit values. The 2nd, third, and fourth parameters
  1230. are cofficients used in the differential equation (a, b, and c). The 
  1231. default values are 5, 15, and 1. Try changing these a little at a 
  1232. time to see the result.
  1233.  
  1234.  
  1235. ROSSLER ATTRACTORS (type=rossler3D)
  1236.  
  1237. This fractal is named after the German Otto Rossler, a non-practicing medical 
  1238. doctor who approached chaos with a bemusedly philosophical attitude.  He would 
  1239. see strange attractors as philosophical objects.  His fractal namesake looks 
  1240. like a band of ribbon with a fold in it. All we can say is we used the same 
  1241. calculus-teacher-defeating trick of multiplying the equations by "dt" to 
  1242. solve the differential equation and generate the orbit.  This time we will 
  1243. skip straight to the orbit generator -if you followed what we did above with 
  1244. Lorenz you can easily reverse engineer the differential equations.
  1245.  
  1246.              xnew = x - y*dt -   z*dt
  1247.              ynew = y + x*dt + a*y*dt 
  1248.              znew = z + b*dt + x*z*dt - c*z*dt
  1249.  
  1250. Default parameters are dt = .04, a = .2, b = .2, c = 5.7
  1251.  
  1252.  
  1253. HENON ATTRACTORS (type=henon)
  1254.  
  1255. Michel Henon was an astronomer at Nice observatory in southern France.  He
  1256. came to the subject of fractals via investigations of the orbits of 
  1257. astronomical objects.  The strange attractor most often linked with Henon's
  1258. name comes not from a differential equation, but from the world of discrete
  1259. mathematics - difference equations. The Henon map is an example of a
  1260. very simple dynamic system that exhibits strange behavior. The orbit traces 
  1261. out a characteristic banana shape, but on close inspection, the shape is made
  1262. up of thicker and thinner parts.  Upon magnification, the thicker bands
  1263. resolve to still other thick and thin components.  And so it goes forever!  
  1264. The equations that generate this strange pattern perform the mathematical
  1265. equivalent of repeated stretching and folding, over and over again.
  1266.  
  1267.              xnew =  1 + y - a*x*x
  1268.              ynew =  b*x
  1269.  
  1270. The default parameters are a=1.4 and b=.3.
  1271.  
  1272.  
  1273. PICKOVER ATTRACTORS (type=pickover)
  1274.  
  1275. Clifford A. Pickover of the IBM Thomas J. Watson Research center is such
  1276. a creative source for fractals that we attach his name to this one only 
  1277. with great trepidation.  Probably tomorrow he'll come up with another one
  1278. and we'll be back to square one trying to figure out a name!
  1279.  
  1280. This one is the three dimensional orbit defined by:
  1281.  
  1282.              xnew = sin(a*y) - z*cos(b*x)
  1283.              ynew = z*sin(c*x) - cos(d*y)
  1284.              znew = sin(x)
  1285.  
  1286. Default parameters are: a = 2.24, b = .43, c = -.65, d = -2.43
  1287.  
  1288.  
  1289. GINGERBREADMAN FRACTAL (type=gingerbread)
  1290.  
  1291. This simple fractal is a charming example stolen from "Science of Fractal
  1292. Images", p. 149.  Look closely, and you will see that the gingerbreadman
  1293. contains infinitely many copies of himself at all different scales.
  1294.  
  1295.              xnew = 1 - y + |x|
  1296.              ynew = x
  1297.  
  1298. There are no parameters.
  1299.  
  1300.  
  1301. TEST (type=test)
  1302.  
  1303. This is a stub that we (and you!) use for trying out new fractal types.
  1304. "Type=test" fractals make use of FRACTINT's structure and features for
  1305. whatever code is in the routine 'testpt()' (located in the small source
  1306. file TESTPT.C) to determine the color of a particular pixel.
  1307.  
  1308. If you have a favorite fractal type that you believe would fit nicely
  1309. into FRACTINT, just rewrite the C function in TESTPT.C (or use the
  1310. prototype function there, which is a simple M-set implementation) with
  1311. an algorithm that computes a color based on a point in the complex
  1312. plane.
  1313.  
  1314. After you get it working, send your code to one of the authors and we
  1315. might just add it to the next release of FRACTINT, with full credit to
  1316. you. Our criteria are: 1) an interesting image and 2) a formula signif-
  1317. icantly different from types already supported. (Bribery may also work.
  1318. THIS author is completely honest, but I don't trust those other guys.)
  1319. Be sure to include an explanation of your algorithm and the parameters
  1320. supported, preferably formatted as you see here to simplify folding it
  1321. into the documentation.
  1322.  
  1323.  
  1324. FORMULA (type=formula)
  1325.  
  1326. Fractint now has a new 'type=formula' fractal type.  This is a
  1327. "roll-your-own" fractal interpreter - you don't even need a compiler!
  1328.  
  1329. To run a "type=formula" fractal, you first need to build a text file
  1330. containing formulas (there's a sample file - FRACTINT.FRM - included
  1331. with this distribution).  When you select the "formula" fractal type,
  1332. you are prompted first for the name of your file.  Then, after the
  1333. program locates the file and scans it for formulas, you are prompted
  1334. for the formula name you wish to run.  After prompting for any
  1335. parameters, the formula is parsed for syntax errors and then the
  1336. fractal is generated.
  1337.  
  1338. There are also two new command-line options that work with type=formula
  1339. ("formulafile=" and "formulaname=") if you are using this new fractal
  1340. type in batch mode.  
  1341.  
  1342. (the following documentation is supplied by Mark Peterson, who wrote the
  1343. formula interpreter):
  1344.  
  1345. Formula fractals allow you to create your own fractal formulas.  The
  1346. general format is:
  1347.  
  1348.    Mandelbrot(XAXIS) { z = Pixel:  z = sqr(z) + pixel, |z| <= 4 }
  1349.       |         |          |                |              |
  1350.      Name     Symmetry    Initial         Iteration       Bailout
  1351.                           Condition                       Criteria
  1352.  
  1353. Initial conditions are set, then the iterations performed until the
  1354. bailout criteria is true or 'z' turns into a periodic loop.
  1355.  
  1356. All variables are created automatically by their usage and treated as
  1357. complex.  If you declare 'v = 2' then the variable 'v' is treated as a
  1358. complex with an imaginary value of zero.
  1359.  
  1360.           Predefined Variables (x, y)
  1361.           --------------------------------------------
  1362.           z              used for periodicity checking
  1363.           p1             parameters 1 and 2
  1364.           p2             parameters 3 and 4
  1365.           pixel          screen coordinates
  1366.  
  1367.           Precedence
  1368.           --------------------------------------------
  1369.           1              sin(), cos(), sinh(), cosh(), sqr(),
  1370.                          log(), exp(), abs(), conj(), real(),
  1371.                          imag()
  1372.           2              - (negation), ^ (power)
  1373.           3              * (multiplication), / (division)
  1374.           4              + (addition), - (subtraction)
  1375.           5              = (assignment)
  1376.           6              < (less than), <= (less than or equal to)
  1377.  
  1378. Precedence may be overridden by use of parenthesis.  Note the modulas
  1379. squared operator |z| is also parenthetic and always sets the imaginary
  1380. component to zero.  This means 'c * |z - 4|' first subtracts 4 from z,
  1381. calculates the modulas squared then multiplies times 'c'.  Nested
  1382. modulas squared operators require overriding parenthesis:
  1383.  
  1384.           c * |z + (|pixel|)|
  1385.  
  1386. The formulas are performed using either integer or floating point
  1387. mathematics depending on the type of math you have setup.  If you do
  1388. not have an FPU then type MPC math is performed in leu of traditional
  1389. floating point.
  1390.  
  1391. Remember that when using integer math there is a limited dynamic
  1392. range, so what you think may be a fractal could really be just a
  1393. limitation of the integer math range.  God may work with integers, but
  1394. His dynamic range is many orders of magnitude greater than our puny 32
  1395. bit mathematics!  Always verify with the floating point.
  1396.  
  1397.  
  1398. JULIBROTS (type=julibrot)
  1399.  
  1400. (the following documentation is supplied by Mark Peterson, who "invented"
  1401. the Julibrot algorithm)
  1402.  
  1403. There is a very close relationship between the Mandelbrot set and
  1404. Julia sets of the same equation.  To draw a Julia set you take the
  1405. basic equation and vary the initial value according to the two
  1406. dimensions of screen leaving the constant untouched.  This method
  1407. diagrams two dimensions of the equation, 'x' and 'iy', which I refer
  1408. to as the Julia x and y.
  1409.  
  1410.      z(0) = screen coordinate (x + iy)
  1411.      z(1) = (z(0) * z(0)) + c, where c = (a + ib)
  1412.      z(2) = (z(1) * z(0)) + c
  1413.      z(3) = . . . .
  1414.  
  1415. The Mandelbrot set is a composite of all the Julia sets.  If you take
  1416. the center pixel of each Julia set and plot it on the screen
  1417. coordinate corresponding to the value of c, a + ib, then you have the
  1418. Mandelbrot set.
  1419.  
  1420.      z(0) = 0
  1421.      z(1) = (z(0) * z(0)) + c, where c = screen coordinate (a + ib)
  1422.      z(2) = (z(1) * z(1)) + c
  1423.      z(3) = . . . .
  1424.  
  1425. I refer to the 'a' and 'ib' components of 'c' as the Mandelbrot 'x'
  1426. and 'y'.
  1427.  
  1428. All the 2 dimensional Julia sets correspond to a single point on the 2
  1429. dimensional Mandelbrot set, making a total of 4 dimensions associated
  1430. with our equation.  Visualizing 4 dimensional objects is not as
  1431. difficult as it may sound at first if you consider we live in a 4
  1432. dimensional world.  The room around you is three dimensions and as you
  1433. read this text you are moving through the fourth dimension of time. 
  1434. You and everything around your are 4 dimensional objects - which is to
  1435. say 3 dimensional objects moving through time.  We can think of the 4
  1436. dimensions of our equation in the same manner, this is as a 3
  1437. dimensional object evolving over time - sort of a 3 dimensional
  1438. fractal movie.  The fun part of it is you get to pick the dimension
  1439. representing time!
  1440.  
  1441. To construct the 4 dimensional object into something you can view on
  1442. the computer screen you start with the simple 2 dimensions of the
  1443. Julia set.  I'll treat the two Julia dimensions as the spacial
  1444. dimensions of height and width, and the Mandelbrot 'y' dimension as
  1445. the third spacial dimension of depth.  This leaves the Mandelbrot 'x'
  1446. dimension as time.  Draw the Julia set associated with the Mandelbrot
  1447. coordinate (-.83, -.25), but instead of setting the color according to
  1448. the iteration level it bailed out on, make it a two color drawing
  1449. where the pixels are black for iteration levels less than 30, and
  1450. another color for iteration levels greater than or equal to 30.  Now
  1451. increment the Mandelbrot 'y' coordinate by a little bit, say (-.83, -
  1452. .2485), and draw another Julia set in the same manner using a
  1453. different color for bailout values of 30 or greater.  Continue doing
  1454. this until you reach (-.83, .25).  You now have a three dimensional
  1455. representation of the equation at time -.83.  If you make the same
  1456. drawings for points in time before and after -.83 you can construct a
  1457. 3 dimensional movie of the equation which essentially is a full 4
  1458. dimensional representation.
  1459.  
  1460. In the Julibrot fractal available with this release of FRACTINT the
  1461. spacial dimensions of height and width are always the Julia
  1462. dimensions.  The dimension of depth is determined by the Mandelbrot
  1463. coordinates.  The program will consider the dimension of depth as the
  1464. line between the two Mandelbrot points.  To draw the image in our
  1465. previous example you would set the 'From Mandelbrot' to (-.83, .25)
  1466. and the 'To Mandelbrot' as (-.83, -.25).  If you set the number of 'z'
  1467. pixels to 128 then the program will draw the 128 Julia sets found
  1468. between Mandelbrot points (-.83, .25) and (-.83, -.25).  To speed
  1469. things up the program doesn't actually calculate ALL the coordinates
  1470. of the Julia sets.  It starts with the a pixel a the Julia set closest
  1471. to the observer and moves into the screen until it either reaches the
  1472. required bailout or the limit to the range of depth.
  1473.  
  1474. Zooming can be done in the same manner as with other fractals.  The
  1475. visual effect (with other values unchanged) is similar to putting the
  1476. boxed section under a pair of magnifying glasses.
  1477.  
  1478. The variable associated with penetration level is the level of bailout
  1479. there you decide to make the fractal solid.  In other words all
  1480. bailout levels less than the penetration level are considered to be
  1481. transparent, and those equal or greater to be opaque.  The farther
  1482. away the apparent pixel is the dimmer the color.
  1483.  
  1484. The remainder of the parameters are needed to construct the red/blue
  1485. picture so that the fractal appears with the desired depth and proper
  1486. 'z' location.  With the origin set to 8 inches beyond the screen plane
  1487. and the depth of the fractal at 8 inches the default fractal will
  1488. appear to start at 4 inches beyond the screen and extend to 12 inches
  1489. if your eyeballs are 2.5 inches apart and located at a distance of 24
  1490. inches from the screen.  The screen dimensions provide the reference
  1491. frame.
  1492.  
  1493. To the human eye blue appears brighter than red.  The Blue:Red ratio
  1494. is used to compensate for this fact.  If the image appears reddish
  1495. through the glasses raise this value until the image appears to be in
  1496. shades of grey.  If it appears bluish lower the ratio.
  1497.  
  1498. Julibrots can only be shown in 256 red/blue colors for viewing in either
  1499. stero-graphic (red/blue funny glasses) or grey-scaled.  FRACTINT
  1500. automatically loads either GLASSES1.MAP or ALTERN.MAP as appropriate.
  1501.  
  1502. DIFFUSION LIMITED AGGREGATION (type=diffusion)
  1503.  
  1504. This type begins with a single point in the center of the screen.  Subsequent 
  1505. points move around randomly until coming into contact with the first point, at 
  1506. which time their locations are fixed and they are colored randomly.  This 
  1507. process repeats until the fractals reaches the edge of the screen.  Use the 
  1508. show orbits function to see the points' random motion.
  1509.  
  1510. One unfortunate problem is that on a large screen, this process will tend to 
  1511. take eons.  To speed things up, the points are restricted to a box around the 
  1512. initial point.  The first and only parameter to diffusion contains the size of 
  1513. the border between the fractal and the edge of the box.  If you make this 
  1514. number small, the fractal will look more solid and will be generated more 
  1515. quickly.
  1516.  
  1517. Diffusion was inspired by a Scientific American article a couple of years back 
  1518. which includes actual pictures of real physical phenomena that behave like 
  1519. this.
  1520.  
  1521. Thanks to Adrian Mariano for providing the diffusion code and documentation. 
  1522.  
  1523.  
  1524. "3D" IMAGES
  1525.  
  1526. FRACTINT can now restore images in "3D". Important: we use quotation 
  1527. marks because it does not CREATE images of 3D fractal objects (there 
  1528. are such, but we're not there yet.) Instead, it restores .FRA images 
  1529. (or .GIF images -- see Sec. 4) as a 3D PROJECTION or STEREO IMAGE 
  1530. PAIR. The iteration values you've come to know and love, the ones that 
  1531. determine pixel colors, are translated into "height" so that your 
  1532. saved screen becomes a landscape viewed in perspective. You can even 
  1533. wrap the landscape onto a sphere for realistic-looking planets and 
  1534. moons that never existed outside your PC!
  1535.  
  1536. We suggest starting with a saved plasma-cloud screen. Hit <3> in main 
  1537. command mode to begin the process, enter the filename. If no extension 
  1538. is specified, a .FRA extension is assumed. If no .FRA is found, it 
  1539. will assume a .GIF extension. If no match is then found, if will 
  1540. attempt to match the file with no extension. Then it will prompt you 
  1541. for the video mode if appropriate.
  1542.  
  1543. Now, you'll be bombarded with a long series of options. Not to worry: 
  1544. all of them have defaults chosen to yield an acceptable starting 
  1545. image, so the first time out just pump your way through with the 
  1546. <Enter> key. When you enter a different value for any option, that 
  1547. becomes the default value the next time you hit <3>, so you can change 
  1548. one option at a time until you get what you want. Generally <ESC> will 
  1549. take you back to the previous screen.
  1550.  
  1551. 3D MODE SELECTION
  1552.  
  1553. After the filename prompt and video mode check, you're presented with 
  1554. a "3d Mode Selection" screen. Each selection will have defaults 
  1555. entered if you wish to change any of the defaults use the cursor keys 
  1556. to move through the menu. When you're satisfied press <Enter>.
  1557.  
  1558. Here are the options and what they do:
  1559.  
  1560. Preview Mode:
  1561.  
  1562.      Preview mode provides a rapid look at your transformed image 
  1563.      using by skipping a lot of rows and filling the image in. Good 
  1564.      for quickly discovering the best parameters. Let's face it, the 
  1565.      FRACTINT authors most famous for "blazingly fast" code *DIDN'T* 
  1566.      write the 3D routines!
  1567.  
  1568. Show Box:
  1569.  
  1570.      If you have selected Preview Mode you have another option to 
  1571.      worry about. This is the option to show the image box in scaled 
  1572.      and rotated coordinates x, y, and z. The box only appears in 
  1573.      rectangular transformations and shows how the final image will be 
  1574.      oriented. If you select light source in the next screen, it will 
  1575.      also show you the light source vector so you can tell where the 
  1576.      light is coming from in relation to your image. Sorry no head or 
  1577.      tail on the vector yet. 
  1578.  
  1579. Coarseness:
  1580.  
  1581.      This sets how many divisions the image will be divided into 
  1582.      in the y direction, if you select preview mode above, or 
  1583.      grid fill in the "Select Fill Type" screen next.
  1584.  
  1585. Spherical Projection:
  1586.  
  1587.      The next question asks if you want a sphere projection. This will 
  1588.      take  your image and map it onto a plane if you answer "no" or a 
  1589.      sphere if you answer "yes" as described above. Try  it and you'll 
  1590.      see what we mean. 
  1591.  
  1592. Stereo:
  1593.  
  1594.      Sound in FRACTINT? Well, not yet. FRACTINT now allows you to 
  1595.      create 3D images for use with red/blue glasses like 3D 
  1596.      comics you may have seen, or images like Captain EO.
  1597.  
  1598.      Option 0 is normal old 3D you can look at with just your 
  1599.      eyes.
  1600.  
  1601.      Options 1 and 2 require the special red/blue-green glasses. 
  1602.      They are meant to be viewed right on the screen or on a 
  1603.      color print off of the screen. The image can be made to 
  1604.      hover entirely or partially in front of the screen. Great 
  1605.      fun! These two options give a gray scale image when viewed. 
  1606.  
  1607.      Option 1 gives 64 shades of gray but with half the spatial 
  1608.      resolution you have selected. It works by writing the red and 
  1609.      blue images on adjacent pixels, which is why it eats half your 
  1610.      resolution. In general, we recommend you use this only with 
  1611.      resolutions above 640x350. Use this mode for continuous potential 
  1612.      landscapes where you *NEED* all those shades. 
  1613.  
  1614.      Option "2" gives you full spatial resolution but with only 16 
  1615.      shades of gray. If the red and blue images overlap, the colors 
  1616.      are mixed. Good for wire-frame images, lorenz3d and ifs3d. Works 
  1617.      fine in 16 color modes.
  1618.  
  1619.      Option 3 is for creating stereo pair images for view later 
  1620.      with more specialized equipment. It allows full color images 
  1621.      to be presented in glorious stereo. The left image presented 
  1622.      on the screen first. You may photograph it or save it. Then 
  1623.      the second image is presented, you may do the same as the 
  1624.      first image. You can then take the two images and convert 
  1625.      them to a stereo image pair as outlined by Bruce Goren (see 
  1626.      below). When you are satisfied with your selections press 
  1627.      enter to go to the next screen which will appear below this 
  1628.      one.
  1629.  
  1630. SELECT FILL TYPE Screen
  1631.  
  1632. These options exist because in the course of the 3D projection, 
  1633. portions of the original image may be stretched to fit the new 
  1634. surface. Points of an image that formerly were right next to each 
  1635. other, now may have a space between them. These options generally 
  1636. determine what to do with the space between the mapped dots.
  1637.  
  1638. For an illustration, pick the second option "just draw the points", 
  1639. which just maps points to corresponding points. Generally this will 
  1640. leave empty space between many of the points. Therefore you can choose 
  1641. various algorithms that "fill in" the space between the points in 
  1642. various ways.
  1643.  
  1644. Now, try the first option "make a surface grid." This option will make 
  1645. a grid of the surface which is as many divisions in the original "y" 
  1646. direction as was set in "coarse" in the first screen. It is very fast, 
  1647. and can give you a good idea what the final relationship of parts of 
  1648. your picture will look like.
  1649.  
  1650. Try the second option, "connect the dots (wire frame)", then "surface 
  1651. fills - (colors interpolated)" and "(colors not interpolated), the 
  1652. general favorite of the authors. Solid fill, while it reveals the 
  1653. pseudo-geology under your pseudo-landscape, inevitably takes longer.
  1654.  
  1655. Now try the light source fill types. These two algorithms allow 
  1656. you to position the "sun" over your "landscape." Each pixel is 
  1657. colored according to the angle the surface makes with an 
  1658. imaginary light source. You will be asked to enter the three 
  1659. coordinates of the vector pointing toward the light in one of the 
  1660. following screens.
  1661.  
  1662. Light source before transformation calculates the illumination 
  1663. before doing the coordinate transformations, and is slightly 
  1664. faster. If you generate a sequence of images where one rotation 
  1665. is progressively changed, the effect is as if the image and the 
  1666. light source are fixed in relation to each other and you orbit 
  1667. around the image.
  1668.  
  1669. Light source after transformation applies the transformations 
  1670. first, then calculates the illumination. If you generate a 
  1671. sequence of images with progressive rotation as above the effect 
  1672. is as if you and the light source are fixed and the object is 
  1673. rotating.
  1674.  
  1675. For ease of discussion we will refer to the following fill types 
  1676. by their numbers:
  1677.  
  1678.         -1 - surface grid
  1679.          0 - (default) - no fill at all - just draw the dots.
  1680.          1 - wire frame - joins points with lines
  1681.          2 - surface fill - (colors interpolated)
  1682.          3 - surface fill - (interpolation turned off)
  1683.          4 - solid fill - draws lines from the "ground" up to the point
  1684.          5 - surface fill with light model - calculated before 3D transforms
  1685.          6 - surface fill with light model - calculated after 3D transforms
  1686.  
  1687. Types 2, 5, and 6 interpolate colors when filling, making a very 
  1688. smooth fill if the palette is continuous. This may not be desirable if 
  1689. the palette is not continuous. Type 3 is the same as type 2 with 
  1690. interpolation turned off. You might want to use fill type 3, for 
  1691. example, to project a .GIF photograph onto a sphere. With type 2, you 
  1692. might see the filled-in points, since chances are the palette is not 
  1693. continuous; type 3 fills those same points in with the colors of 
  1694. adjacent pixels. However, for most fractal images, fill type 2 works 
  1695. better.
  1696.  
  1697.  
  1698. STEREO 3D VIEWING
  1699.  
  1700. If you selected Stereo option 1, 2 or 3 you will be presented another 
  1701. screen to select from. We suggest you definitely use defaults at first 
  1702. on this one.
  1703.  
  1704. Funny Glasses Parameters
  1705.  
  1706. When you look at an image with both eyes, each eye sees the image in 
  1707. slightly different perspective because they see it from different 
  1708. places.
  1709.  
  1710. The first selection you must make is ocular separation, the distance 
  1711. the between the viewers eyes. This is measured as a % of screen and is 
  1712. an important factor in setting the position of the final stereo image 
  1713. in front of or behind the CRT Screen.
  1714.  
  1715. The second selection is convergence, also as a % of screen. This 
  1716. tends to move the image forward and back to set where it floats. 
  1717. More positive values move the image towards the viewer. The value 
  1718. of this parameter needs to be set in conjunction with the setting of 
  1719. ocular separation and the perspective distance. It directly adjusts 
  1720. the overall separation of the two stereo images. Beginning anaglyphers 
  1721. love to create images floating mystically in front of the screen, but 
  1722. grizzled old 3D veterans look upon such antics with disdain, and 
  1723. believe the image should be safely inside the monitor where it 
  1724. belongs!
  1725.  
  1726. Left and Right Red and Blue image crop (% of screen also) help 
  1727. keep the visible part of the right image the same as the visible 
  1728. part of the left by cropping them. If there is too much in the 
  1729. field of either eye that the other doesn't see, the stereo effect 
  1730. can be ruined.
  1731.  
  1732. Red and Blue brightness factor. The generally available red/blue-
  1733. green glasses, made for viewing on ink on paper and not the light 
  1734. from a CRT, let in more red light in the blue-green lens than we 
  1735. would like. This leaves a ghost of the red image on the blue-
  1736. green image (definitely not desired in stereo images). We have 
  1737. countered this by adjusting the intensity of the red and blue 
  1738. values on the CRT. In general you should not have to adjust this.
  1739.  
  1740. The final entry is Map file name. If you have a special map file 
  1741. you want to use for Stereo 3D this is the place to enter its 
  1742. name. Generally glasses1.map is for type 1 (alternating pixels), and 
  1743. glasses2.map is for type 2 (superimposed pixels). Grid.map is great 
  1744. for wire-frame images using 16 color modes.
  1745.  
  1746.  
  1747.  
  1748. RECTANGULAR COORDINATE TRANSFORMATION
  1749.  
  1750. The first entries are rotation values around the X, Y, and Z axes. 
  1751. Think of your starting image as a flat map: the X value tilts the 
  1752. bottom of your monitor towards you by X degrees, the Y value pulls the 
  1753. left side of the monitor towards you, and the Z value spins it 
  1754. counter-clockwise. Note that these are NOT independent rotations: the 
  1755. image is rotated first along the X-axis, then along the Y-axis, and 
  1756. finally along the Z-axis. Those are YOUR axes, not those of your (by 
  1757. now hopelessly skewed) monitor. All rotations actually occur through 
  1758. the center of the original image.
  1759.  
  1760. Then there are three scaling factors in per cent. Initially, leave the 
  1761. X and Y axes alone and play with Z, now the vertical axis, which 
  1762. translates into surface "roughness."  High values of Z make spiky, on-
  1763. beyond-Alpine mountains and improbably deep valleys; low values make 
  1764. gentle, rolling terrain. Negative roughness is legal: if you're doing 
  1765. an M-set image and want Mandelbrot Lake to be below the ground, 
  1766. instead of eerily floating above, try a roughness of about -30%.
  1767.  
  1768. Next we need a water level -- really a minimum-color value that 
  1769. performs the function "if (color < waterlevel) color = waterlevel". So 
  1770. it plots all colors "below" the one you choose at the level of that 
  1771. color, with the effect of filling in "valleys" and converting them to 
  1772. "lakes."
  1773.  
  1774. Now we enter a perspective distance, which you can think of as the 
  1775. "distance" from your eye to the image. A zero value (the default) 
  1776. means no perspective calculations, which allows use of a faster 
  1777. algorithm. 
  1778.  
  1779. For non-zero values, picture a box with the original X-Y plane of your 
  1780. flat fractal on the bottom, and your 3D fractal inside. A perspective 
  1781. value of 100% places your eye right at the edge of the box and yields 
  1782. fairly severe distortion, like a close view through a wide-angle lens. 
  1783. 200% puts your eye as far from the front of the box as the back is 
  1784. behind. 300% puts your eye twice as far from the front of the box as 
  1785. the back is, etc. Try about 150% for reasonable results. Much larger 
  1786. values put you far away for even less distortion, while values smaller 
  1787. than 100% put you "inside" the box. Try larger values first, and work 
  1788. your way in.
  1789.  
  1790. Finally, you are prompted for two types of X and Y shifts (now back in 
  1791. the plane of your screen) that let you move the final image around if 
  1792. you'd like to re-center it. The first set, x and y shift with 
  1793. perspective, move the image and the effect changes the perspective you 
  1794. see. The second set, "x and y adjust without perspective", move the 
  1795. image but do not change perspective. They are used just for 
  1796. positioning the final image on the screen
  1797.  
  1798. Well, OK, we lied. If you selected one of the light source fill 
  1799. options, there are still MORE options.
  1800.  
  1801. You must chose the direction of the light from the light source. This 
  1802. will be scaled in the x, y, and z directions the same as the image. 
  1803. For example, 1,1,3 positions the light to come from the lower right 
  1804. front of the screen in relation to the untransformed image. It is 
  1805. important to remember that these coordinates are scaled the same as 
  1806. your image. Thus 1,1,1 positions the light to come from a direction of 
  1807. equal distances to the right, below and in front of each pixel on the 
  1808. original image. However, if the x,y,z scale is set to 90,90,30 the 
  1809. result will be from equal distances to the right and below each pixel 
  1810. but from only 1/3 the distance in front of the screen ie. it will be 
  1811. low in the sky, say, afternoon or morning.
  1812.  
  1813. Then you are asked for a smoothing factor. Unless you used continuous 
  1814. potential (see Sec. 4) when generating the starting image, the illumi-
  1815. nation when using light source fills may appear "sparkly", like a 
  1816. sandy beach in bright sun. A smoothing factor of 2 or 3 will allow you 
  1817. to see the large-scale shapes better. But if your fractal is not a 
  1818. plasma cloud and has features with sharply defined boundaries (e.g. 
  1819. Mandelbrot Lake), the smoothing may cause the colors to run. This is a 
  1820. feature, not a bug. (A copyrighted response of [your favorite 
  1821. commercial soft-ware company here], used by permission.) 
  1822.  
  1823. Author's note - smoothing is a historical relic dating back to 
  1824. *BEFORE* we added continuous potential.  If anyone actually *USES* 
  1825. this, let us know - otherwise we'll probably take it out.
  1826.  
  1827. You'll probably want to adjust the final colors for fill types using 
  1828. light source via color cycling. Try one of the more continuous 
  1829. palettes (<F8> through <F10>), or load the GRAY palette with the 
  1830. <A>lternate-map command.
  1831.  
  1832. Now, absolutely the last option (this time we mean it): you are asked 
  1833. for a range of "transparent" colors, if any. This option is most 
  1834. useful when using the <O>verlay command below. Enter the color range 
  1835. (minimum and maximum value) for which you do not want to over-write 
  1836. whatever may already be on the screen. The default is no transparency 
  1837. (display everything).
  1838.  
  1839. Note that any image loaded up in 3D is treated as if it were a plasma 
  1840. cloud: we have NO idea how to retain the ability to zoom and pan 
  1841. around a 3D image that has been twisted, stretched, perspective-ized, 
  1842. and water-leveled. Actually, we do, but it involves the kind of 
  1843. hardware that Industrial Light & Magic, Pixar et al. use for feature 
  1844. films. So if you'd like to send us a check equivalent to George Lucas' 
  1845. net from the "Star Wars" series...
  1846.  
  1847. Now, lie down for a while in a quiet room with a damp washcloth on 
  1848. your forehead. Feeling better? Good -- because it's time to go back 
  1849. almost to the top of the 3D options and just say yes to:
  1850.  
  1851.  
  1852. SPHERICAL PROJECTION
  1853.  
  1854. Picture a globe lying on its side, "north" pole to the right. (It's 
  1855. our planet, and we'll position it the way we like.) You will be 
  1856. mapping the X and Y axes of the starting image to latitude and 
  1857. longitude on the globe, so that what was a horizontal row of pixels 
  1858. follows a line of longitude. The defaults exactly cover the hemisphere 
  1859. facing you, from longitude 180 degrees (top) to 0 degrees (bottom) and 
  1860. latitude -90 (left) to latitude 90 (right). By changing them you can 
  1861. map the image to a piece of the hemisphere or wrap it clear around the 
  1862. globe.
  1863.  
  1864. The next entry is for a radius factor that controls the over-all size 
  1865. of the globe. All the rest of the entries are the same as in the 
  1866. landscape projection. You may want less surface roughness for a 
  1867. plausi-ble look, unless you prefer small worlds with big topography, a 
  1868. la "The Little Prince."
  1869.  
  1870. WARNING: When the "construction" process begins at the edge of the 
  1871. globe (default) or behind it, it's plotting points that will be hidden 
  1872. by subsequent points as the process sweeps around the sphere toward 
  1873. you. Our nifty hidden-point algorithms "know" this, and the first few 
  1874. dozen lines may be invisible unless a high mountain happens to poke 
  1875. over the horizon. If you start a spherical projection and the screen 
  1876. stays black, wait for a while (a longer while for higher resolution or 
  1877. fill type 6) to see if points start to appear. Would we lie to you? If 
  1878. you're still waiting hours later, first check that the power's still 
  1879. on, then consider a faster system. 
  1880.  
  1881.  
  1882. Once you're familiar with the effects of the 3D option values you have 
  1883. a variety of options on how to specify them. You can specify them all 
  1884. on the command line (there ARE a lot of them so they may not all fit 
  1885. within the DOS command line limits), with an SSTOOLS.INI file, or with 
  1886. a command file.
  1887.  
  1888. Here's an example for you power FRACTINTers, the command
  1889.  
  1890.           FRACTINT MYFILE SAVENAME=MY3D 3D= BATCH=YES
  1891.  
  1892. would make FRACTINT load MYFILE.FRA, re-plot it as a 3D landscape 
  1893. (taking all of the defaults), save the result as MY3D.FRA, and exit to 
  1894. DOS. By the time you've come back with that cup of coffee, you'll have 
  1895. a new world to view, if not conquer.
  1896.  
  1897.  
  1898. 3D OVERLAY MODE
  1899.  
  1900. While the <3> command creates its image on a blank screen, the <O> 
  1901. command draws a second image over an existing displayed image. This 
  1902. image can be any restored image from a <R> command or the result of a 
  1903. just executed <3> command. So you can do a landscape, then hit <O> and 
  1904. choose spherical projection to re-plot that image or another as a moon 
  1905. in the sky above the landscape. <O> can be repeated as many times as 
  1906. you like.
  1907.  
  1908. It's worth noting that not all that many years ago, one of us watched 
  1909. Benoit Mandelbrot and fractal-graphics wizard Dick Voss creating just 
  1910. such a moon-over-landscape image at IBM's research center in Yorktown 
  1911. Heights, NY. The system was a large and impressive mainframe with 
  1912. floating-point facilities bigger than the average minicomputer, 
  1913. running LBLGRAPH -- what Mandelbrot calls "an independent-minded and 
  1914. often very ill-mannered heap of graphics programs that originated in 
  1915. work by Alex Hurwitz and Jack Wright of IBM Los Angeles."
  1916.  
  1917. We'd like to salute LBLGRAPH, its successors, and their creators, 
  1918. because it was their graphic output (like "Planetrise over Labelgraph 
  1919. Hill," plate C9 in Mandelbrot's "Fractal Geometry of Nature") that 
  1920. helped turn fractal geometry from a mathematical curiosity into a 
  1921. phenomenon. We'd also like to point out that it wasn't as fast, flexi-
  1922. ble or pretty as FRACTINT on a 386/16 PC with S-VGA graphics. Now, a 
  1923. lot of the difference has to do with the incredible progress of micro-
  1924. processor power since then, so a lot of the credit should go to Intel 
  1925. rather than to our highly tuned code. OK, twist our arms -- it IS 
  1926. awfully good code.
  1927.  
  1928.  
  1929. SPECIAL NOTE FOR CGA OR HERCULES USERS
  1930.  
  1931. If you are one of those unfortunates with a CGA or Hercules 2-color 
  1932. monochrome graphics, it is now possible for you to make 3D projection 
  1933. images.
  1934.  
  1935. Try the following unfortunately circuitous approach. Invoke FRACTINT, 
  1936. making sure you have set askvideo=yes. Use a diskvideo mode to create 
  1937. a 256 color fractal. You might want to edit the fractint.cfg file to 
  1938. make a diskvideo mode with the same pixel dimensions as your normal 
  1939. video (see "batch=config" command for how to create fractint.cfg). 
  1940. Using the "3" command, enter the file name of the saved 256 color 
  1941. file, say "no" to the "Legal for this machine?" prompt, selecting 
  1942. instead your 2 or 4 color mode, and answer the other 3D prompts. You 
  1943. will then see a 3D projection of the fractal. Another example of Stone 
  1944. Soup responsiveness to our fan mail!
  1945.  
  1946.  
  1947. HOW TO MAKE 3D SLIDES
  1948.  
  1949. Bruce Goren, CIS's resident stereoscopic maven, contributed these tips 
  1950. on what to do with your 3D images (Bruce inspired and prodded us so 
  1951. much we automated much of what follows, allowing both this and actual 
  1952. on screen stereo viewing, but we included it here for reference and a 
  1953. brief tutorial.)
  1954.  
  1955. "I use a Targa 32 video card and TOPAS graphic software, moving the 
  1956. viewport or imaginary camera left and right to create two separate 
  1957. views of the stationary object in x,y,z, space. The distance between 
  1958. the two views, known as the inter-ocular distance, toe-in or 
  1959. convergence angle, is critical. It makes the difference between good 
  1960. 3-D and headache-generating bad 3-D.
  1961.  
  1962. "For a 3D fractal landscape, I created and photographed the left and 
  1963. right eye views as if flying by in an imaginary airplane and mounted 
  1964. the film chips for stereo viewing. To make my image, first I generated 
  1965. a plasma cloud based on a color map I calculated to resemble a 
  1966. geological survey map (available on CIS as TARGA.MAP). In the 3D 
  1967. reconstruction, I used a perspective value of 150 and shifted the 
  1968. camera -15 and +15 on the X-axis for the left and right views. All 
  1969. other values were left to the defaults.
  1970.  
  1971. "The images are captured on a Matrix 3000 film recorder -- basically a 
  1972. box with a high-resolution (1400 lines) black and white TV and a 35mm 
  1973. camera (Konica FS-1) looking at the TV screen through a filter wheel. 
  1974. The Matrix 3000 can be calibrated for 8 different film types, but so 
  1975. far I have only used Kodak Ektachrome 64 daylight for slides and a few 
  1976. print films. I glass mount the film chips myself.
  1977.  
  1978. "Each frame is exposed three times, once through each of the red, 
  1979. blue, and green filters to create a color image from computer video 
  1980. without the scan-lines which normally result from photographing 
  1981. television screens.  The aspect ratio of the resulting images led me 
  1982. to mount the chips using the 7-sprocket Busch-European Emde masks.  
  1983. The best source of  Stereo mounting and viewing supplies I know of is 
  1984. an outfit called Reel 3-D Enterprises, Inc. at P.O. Box 2368, Culver 
  1985. City, CA 90231, tel. 213-837-2368. "My platform is an IBM PC/AT 
  1986. crystal-swapped up to 9 MHz. The math co-processor runs on a separate 
  1987. 8-MHz accessory sub-board. The system currently has 6.5 MB of RAM."
  1988.  
  1989.  
  1990.  
  1991.                           INVERSION
  1992.  
  1993. Many years ago there was a brief craze for "anamorphic art": images
  1994. painted and viewed with the use of a cylindrical mirror, so that  they
  1995. looked weirdly distorted on the canvas but correct in the distorted
  1996. reflection. (This byway of art history may be a useful defense when
  1997. your friends and family give you odd looks for staring at fractal
  1998. images color-cycling on a CRT.)
  1999.  
  2000. The <I>nversion option performs a related transformation on most of the
  2001. fractal types. You define the center point and radius of a circle;
  2002. FRACTINT maps each point inside the circle to a corresponding point
  2003. outside, and vice-versa. This is known to mathematicians as inverting
  2004. (or if you want to get precise, "everting") the plane, and is something
  2005. they can contemplate without getting a headache. John Milnor, mentioned
  2006. earlier in connection with the distance-estimator method, made his name
  2007. in the 1950s with a method for everting a seven-dimensional sphere, so
  2008. we have a lot of catching up to do.
  2009.  
  2010. For example, if a point inside the circle is 1/3 of the way from the
  2011. center to the radius, it is mapped to a point along the same radial
  2012. line, but at a distance of (3 * radius) from the origin. An outside
  2013. point at 4 times the radius is mapped inside at 1/4 the radius.
  2014.  
  2015. The <I> command prompts you for the radius and center coordinates of
  2016. the inversion circle. A default choice of -1 sets the radius at 1/6 the
  2017. smaller dimension of the current screen mode.  The default values
  2018. for Xcenter and Ycenter use the center of the current screen.
  2019.  
  2020. Try this one out with a Newton plot, so its radial "spokes" will give
  2021. you something to hang on to. Plot a Newton-method image, then hit <I>
  2022. and use a radius of 1, default center coordinates. The center has
  2023. "exploded" to the periphery.
  2024.  
  2025. Inverting through a circle not centered on the origin produces bizarre
  2026. effects that we're not even going to try to describe. Aren't computers
  2027. wonderful?
  2028.  
  2029.  
  2030. DECOMPOSITION
  2031.  
  2032. You'll remember that most fractal types are calculated by iterating a
  2033. simple function of a complex number, producing another complex number,
  2034. until either the number exceeds some pre-defined "bailout" value, or
  2035. the iteration limit is reached. The pixel corresponding to the starting
  2036. point is then colored based on the result of that calculation.
  2037.  
  2038. The decomposition command toggles to another coloring protocol. (It's
  2039. <Q> because the first implementation was 4-way or "quaternary," and <D>
  2040. was already spoken for.) Here the points are colored according to which
  2041. quadrant of the complex plane (negative real/positive imaginary,
  2042. positive real/positive imaginary, etc.) the final value is in. If you
  2043. use 4 as the first parameter, points ending up in each quadrant are
  2044. given their own color; if 2 (binary decomposition), points in alternat-
  2045. ing quadrants are given 2 alternating colors.
  2046.  
  2047. The result is a kind of warped checkerboard coloring, even in areas
  2048. that would ordinarily be part of a single contour. Remember, for the M-
  2049. set all points whose final values exceed 2 (by any amount) after, say,
  2050. 80 iterations are normally the same color; under decomposition,
  2051. FRACTINT runs [bailout-value] iterations and then colors according to
  2052. where the actual final value falls on the complex plane.
  2053.  
  2054. The second parameter is the bailout value. The smaller it is, the
  2055. faster (though not much) the plot will run; the larger it is, the more
  2056. accurate it will be. A value of about 50 is a good compromise for M/J
  2057. sets.
  2058.  
  2059.  
  2060. LOGARITHMIC PALETTES
  2061.  
  2062. By default, Fractint uses a continuous palette - ie, if you are using
  2063. a 16-color video mode, and you are using the default maximum iteration
  2064. count of 150, your image will run through the 16-color palette 150/16 =
  2065. 9.375 times.  If you elect to use Logarithmic palettes, however, the
  2066. color Fractint uses for iteration N will be determined by the
  2067. algorithm "palettenumber = maxcolors * log(maxiter) / log(N).  This
  2068. results in spectacularly different images if you are using a high
  2069. iteration limit near the current iteration maximum of 32000 and are
  2070. zooming in on an area near a "lakelet".
  2071.  
  2072. BIOMORPHS
  2073.  
  2074. Related to binary decomposition are the "biomorphs" invented by
  2075. Clifford Pickover, and discussed by A. K. Dewdney in the July 1989
  2076. "Scientific American", page 110. These are so-named because this
  2077. coloring scheme makes many fractals look like one-celled animals. The
  2078. idea is simple. The escape-time algorithm terminates an iterating
  2079. formula when the size of the orbit value exceeds a predetermined
  2080. bail-out value. Normally the pixel corresponding to that orbit is
  2081. colored according to the iteration when bailout happened. To create
  2082. biomorphs, this is modified so that if EITHER the real OR the
  2083. imaginary component is LESS than the bailout, then the pixel is set to
  2084. the "biomorph" color. The effect is a bit better with higher bailout
  2085. values: the bailout is automatically set to 100 when this option is
  2086. in effect. You can try other values with the "bailout=" option.  The
  2087. biomorph option is turned on via the "biomorph=nnn" command-line option
  2088. (where "nnn" is the color to use on the affected pixels).  When toggling
  2089. to Julia sets, the default corners are three times bigger than normal
  2090. to allow seeing the biomorph appendages. Does not work with all types -
  2091. in particular it fails with any of the mandelsine family. However, if
  2092. you are stuck with monochrome graphics, try it - works great in
  2093. two-color modes. Try it with the marksmandel and marksjulia types, or
  2094. any of the new "biomorph" fractals.
  2095.  
  2096. STARFIELDS
  2097.  
  2098. Once you have generated your favorite fractal image, you can convert it
  2099. into a fractal starfield with the 'a' transformation (for 'astronomy'? -
  2100. once again, all of the good letters were gone already).  Stars are generated
  2101. on a pixel-by-pixel basis - the odds that a particular pixel will coalesce
  2102. into a star are based (partially) on the color index of that pixel.
  2103.  
  2104. (the following documentation is supplied by Mark Peterson, who wrote the
  2105. starfield transformation):
  2106.  
  2107. If the screen were entirely black and the 'Star Density per Pixel'
  2108. were set to 30 then a starfield transformation would create an evenly
  2109. distributed starfield with an average of one star for every 30 pixels.
  2110.  
  2111. If you're on a 320x200 screen then you have 64000 pixels and would end
  2112. up with about 2100 stars.  
  2113.  
  2114. By introducing the variable of 'Clumpiness' we can create more stars
  2115. in areas that have higher color values.  At 100% Clumpiness a color
  2116. value of 255 will change the average of finding a star at that
  2117. location to 50:50.  A lower clumpiness values will lower the amount of
  2118. probability weighting.  To create a spiral galaxy draw your favorite
  2119. spiral fractal (IFS, Julia, or Mandelbrot) and perform a starfield
  2120. transformation.  For general starfields I'd recommend transforming a 
  2121. plasma fractal.
  2122.  
  2123. Real starfields have many more dim stars than bright ones because very
  2124. few stars are close enough to appear bright.  To achieve this effect
  2125. the program will create a bell curve based on the value of ratio of
  2126. Dim stars to bright stars.  After calculating the bell curve the curve
  2127. is folded in half and the peak used to represent the number of dim stars.
  2128.  
  2129. Starfields can only be shown in 256 colors.  FRACTINT will automatically
  2130. try to load ALTERN.MAP and abort if the map file cannot be found.
  2131.  
  2132.  
  2133. 3. Command-Line Arguments, Batch Mode, and SSTOOLS.INI
  2134.  
  2135. FRACTINT accepts command-line arguments that allow you to load it with 
  2136. your own choice of video mode, starting coordinates, and just about 
  2137. every other parameter and option. These arguments can also be included 
  2138. in a SSTOOLS.INI startup file, or in command files invoked on the 
  2139. command line using LINK-style syntax ("FRACTINT @MYFILE"). The program 
  2140. first looks along the DOS PATH for any file called SSTOOLS.INI and 
  2141. reads start-up variables from that file. Then, it looks at its own 
  2142. command line; arguments there will over-ride those from the .INI file. 
  2143. The syntax is:
  2144.  
  2145.               FRACTINT argument argument argument...
  2146.  
  2147. where the individual arguments are separated by one or more spaces (an 
  2148. individual argument may NOT include spaces). Either upper or lower 
  2149. case may be used, and arguments can be in any order. To make your file 
  2150. more readable, you may replace the spaces with Returns.
  2151.  
  2152. Some terminology:
  2153. COMMAND=nnn               enter a number in place of "nnn"
  2154. COMMAND=[filename]        you supply filename
  2155. COMMAND=yes|no|whatever   means choose one of "yes", "no", and "whatever" 
  2156. COMMAND=1st[/2nd[/3rd]] - the slash-separated parameters "2nd" and
  2157.                           "3rd" are optional 
  2158.  
  2159. FILENAME=[name]
  2160. Causes FRACTINT to read the named file, which must either have been 
  2161. saved from an earlier FRACTINT session (version 7.0 or later) or be a 
  2162. generic GIF file, and use that as its starting point, bypassing the 
  2163. initial information screens. The filetype is optional and defaults to 
  2164. .FRA. Generic GIF files are restored as fractal type "plasma". On the 
  2165. command line you may omit FILENAME= and just give the name; the full 
  2166. argument is required in SSTOOLS.INI and other command files.
  2167.  
  2168. @FILENAME
  2169. Causes FRACTINT to read "filename" for arguments. When it finishes, it 
  2170. resumes reading its own command line -- i.e., "FRACTINT MAXITER=250 
  2171. @MYFILE PASSES=1" is legal. This option is only valid on the command 
  2172. line, as FRACTINT is not clever enough to deal with multiple 
  2173. indirection.
  2174.  
  2175. PASSES=1|2|guess|btm
  2176. Selects single-pass, dual-pass, solid-Guessing mode, or the Boundary
  2177. Tracing algorithm.  Again, the first two take the same total time to
  2178. finish the display, while solid-guessing is faster at the risk of
  2179. errors for a few pixels.  Boundary tracing is sometimes faster, 
  2180. sometimes slower, and doesn't work for some fractal types at all
  2181. (like the Newton fractals).
  2182.  
  2183. INSIDE=nnn|bof60|bof61
  2184. Set the color of the interior: for example, "INSIDE=0" makes the M-set 
  2185. a stylish basic black. A setting of -1 makes inside=maxiter. We have 
  2186. added two more options, inside=bof61 and inside=bof62, which reveal
  2187. more of the hidden structure inside the "lake".  These options are named
  2188. after the figures on pages 61 and 62 of "Beauty of Fractals". See appendix
  2189. for a brilliant explanation of what these do!
  2190.  
  2191. OUTSIDE=nnn
  2192. Set the color of the exterior: for example, "OUTSIDE=1" makes all  
  2193. points not INSIDE the fractal set to color 1 (blue). Note that
  2194. defining an OUTSIDE color forces any image to be a two-color one:
  2195. either a point is INSIDE the set, or it's OUTSIDE it.
  2196.  
  2197. MAXITER=nnn
  2198. Reset the iteration maximum (the number of iterations at which the 
  2199. program gives up and says 'OK, this point seems to be part of the set 
  2200. in question and should be colored [insidecolor]') from the default 
  2201. 150. Values range from 10 to 32000 (super-high iteration limits like 
  2202. 30000 are useful when using logarithmic palettes).
  2203.  
  2204. ITERINCR=nnn
  2205. Set the iteration increment (the change in maxiter when you hit the 
  2206. '<' or '>' keys). Default is 50.
  2207.  
  2208. VIDEO=xxx
  2209. Set the initial video mode (and bypass the informational screens). 
  2210. Handy for batch runs. (Example: VIDEO=F4 for IBM 16-color VGA.)
  2211.  
  2212. (You can obtain the current VIDEO= values from the "Video Modes" help 
  2213. screens inside Fractint.  We don't duplicate them here only because 
  2214. they change so darned often!)
  2215.  
  2216. ASKVIDEO=yes|no
  2217. If "no," this eliminates the prompt asking you if a file to be 
  2218. restored is OK for your current video hardware.
  2219.  
  2220. WARNING: every version of FRACTINT so far has had a bigger, better, but
  2221. shuffled-around video table. Since calling for a mode your hardware
  2222. doesn't support can leave your system in limbo, be careful about
  2223. leaving these arguments in a command file to be used with future 
  2224. versions of FRACTINT, particularly for the super-VGA modes.
  2225.  
  2226. SAVENAME=[name]
  2227. Set the filename to use when you <S>ave a screen. The default filename 
  2228. is FRACT001. The .FRA extension is optional (Example: SAVENAME=myfile)
  2229.  
  2230. WARN=yes|no
  2231. Sets the savename warning flag (default is 'no'). If 'yes', saved 
  2232. files will NOT over-write existing files from previous sessions; 
  2233. instead the automatic incrementing of FRACTnnn.FRA will continue.
  2234.  
  2235. TYPE=[name]
  2236. Selects the type of fractal image to display. The default is type 
  2237. "mandel," the M-set.
  2238.  
  2239. PARAMS=n/n/n/n...
  2240. Set optional (required, for some fractal types) values used in 
  2241. plotting. These numbers typically represent the real and imaginary 
  2242. portions of some startup value, and are described in detail as needed 
  2243. in Sec. 2. (Example: FRACTINT TYPE=julia PARAMS=-0.48/0.626 would wait 
  2244. at the opening screen for you to select a video mode, but then proceed 
  2245. straight to the Julia set for the stated x (real) and y (imaginary) 
  2246. coordinates.)
  2247.  
  2248. CORNERS=xmin/xmax/ymin/ymax 
  2249. Begin with these coordinates as the range of x and y coordinates, 
  2250. rather than the default values of (for type=mandel) -2.0/2.0/-1.5/1.5. 
  2251. (Example: corners=-0.739/-0.736/0.288/0.291).
  2252.  
  2253. POTENTIAL=maxcolor[/slope[/modulus[/potfile]]]
  2254. Establishes the "continuous potential" coloring mode for all fractal 
  2255. types except plasma clouds, IFS and IFS3D. The four arguments define 
  2256. the maximum color value, the slope of the potential curve, the modulus 
  2257. "bailout" value, and the savefile name. Example: "POTENTIAL= 
  2258. 240/2000/40/potfile". The Mandelbrot and Julia types ignore the 
  2259. modulus bailout value and use their own hardwired value of 4.0 
  2260. instead; see Sec. 4 on the continuous-potential algorithm for details.
  2261.  
  2262. RSEED=nnnn
  2263. The initial random-number "seed" for plasma clouds is taken from your 
  2264. PC's internal clock-timer. This argument forces a value (which you can 
  2265. see in the <Tab> display), and allows you to reproduce plasma clouds. 
  2266. A detailed discussion of why a TRULY random number may be impossible 
  2267. to define, let alone generate, will have to wait for "FRACTINT: The 3-
  2268. MB Doc File."
  2269.  
  2270. DECOMP=2|4|8|16|32|64|128|256
  2271. Invokes the corresponding decomposition coloring scheme.
  2272.  
  2273. LOGMAP=yes Switches the default color palette-map selection from 
  2274. normal (continu-ous) to logarithmic.
  2275.  
  2276. IFS=[filename]
  2277. Use the IFS coded values in [filename] to generate Barnsley IFS 
  2278. fractal images. The default extension is .IFS. See Sec. 2 for details.
  2279.  
  2280. IFS3D=[filename]
  2281. Use the IFS coded values in [filename] to generate Barnsley IFS3D 
  2282. fractals.
  2283.  
  2284. 3D=Yes
  2285. Replaces the default answers to the <3> command's prompts, as 
  2286. described in Sec. 2. If FILENAME= is given, forces the restore to be 
  2287. performed in 3D mode. Very handy when used with the 'batch=yes' option 
  2288. for batch-mode 3D images. (Note: the form "3D/=parm/parm/parm ..." for 
  2289. entering 3D parameters still works but will not be supported in the 
  2290. future. Use the variables below. Position-sensitive parameters are 
  2291. nasty and evil, especially when there are dozens of them!)
  2292.  
  2293. The options below replace selected 3D defaults:
  2294. sphere=yes                 Turns on spherical projection mode
  2295. Longitude=nn/nn            Longitude minimum and maximum
  2296. latitude=nn/nn             Latitude minimum and maximum
  2297. radius=nn                  Radius scale factor
  2298. rotation=nn[/nn[/nn]]      Rotation about x,y, and z axes
  2299. scalexyz=nn/nn/nn          X,y,and z scale factors
  2300. roughness=nn               Same as z scale factor
  2301. waterline=nn               Colors nn and below will be "inside" color
  2302. filltype=nn                3D filltype
  2303. perspective=nn             Perspective distance
  2304. xyshift=nn/nn              Shift image in x and y directions with
  2305.                             perspective
  2306. lightsource=nn/nn/nn       Coordinates for light-source vector
  2307. smoothing=nn               Smooths images in light-source fill modes
  2308. transparent=min/max        Defines a range of colors to be treated as   
  2309.                             "transparent" when <O>verlaying 3D images.
  2310. xyadjust=nn/nn             This shifts the image in the x/y dir without
  2311.                             perspective
  2312. stereo=n                   Selects the type of stereo image creation
  2313. interocular=nn             Sets the interocular distance for stereo
  2314. converge=nn                Determines the overall image separation
  2315. crop=nn/nn/nn/nn           Trims the edges off stereo pairs
  2316. bright=nn/nn               Compensates for funny glasses filter parameters
  2317.  
  2318. To stay out of trouble, use the complete list, even if you want to use 
  2319. what you think are the default values. It takes a little practice to 
  2320. learn what the default values really are. The best way to create a 
  2321. command file is to use the Batch command <B> on an image you like and 
  2322. then modify the resulting parameters.
  2323.  
  2324. INVERT=nn/nn/nn
  2325. Turns on inversion. The parameters are radius of inversion, x-coordi-
  2326. nate of center, and y-coordinate of center. -1 as the first parameter
  2327. sets the radius to 1/6 the smaller screen dimension; no x/y parameters
  2328. defaults to center of screen. The values are displayed with the <Tab>
  2329. command.
  2330.  
  2331. FLOAT=yes
  2332. Most fractal types have both a fast integer math and a floating 
  2333. point version. The faster, but possibly less accurate, integer 
  2334. version is the default. If you have a new 80486 or other fast 
  2335. machine with a math coprocessor, or if you are using the 
  2336. continuous potential option (which looks best with high bailout 
  2337. values not possible with our integer math implementation), you 
  2338. may prefer to use floating point. Just add "float=yes" to the 
  2339. command line to do so. 
  2340.  
  2341. PRINTER=type[/resolution[/port#]]
  2342. Defines your printer setup. Currently legal printer types (only the
  2343. first two characters are needed): [HP] LaserJet, [EP]son-compatible,
  2344. [IB]M-compatible (which is identical to the Epson driver at the
  2345. moment), and [CO]lor (equivalent to the Star Micronics printer).
  2346. The default printer type is the Epson/IBM. Resolution is in
  2347. DPI, and currently available values are 60, 120, and 240 for the
  2348. Epson/IBM and 75, 150, and 300 for the LaserJet (the default value is
  2349. the lowest resolution). Legal printer port values are 1, 2, and 3 (for
  2350. LPT 1-3) and 11, 12, 13, and 14 (for COM1-4). The SSTOOLS.INI file is a
  2351. REAL handy place to put this option, so that it's available whenever
  2352. you have that sudden, irresistible urge for hard copy.
  2353.  
  2354. CYCLELIMIT=nnn
  2355. Sets the speed of color cycling. Technically, the number of DAC regis-
  2356. ters updated during a single vertical refresh cycle. Legal values are 1
  2357. - 256, default is 55.
  2358.  
  2359. MAP=[filename]
  2360. Reads in a replacement color map from [filename]. This map replaces the
  2361. default video color map of your VGA or TARGA card. The file must be in
  2362. the format described in Sec. 4. The difference between this argument
  2363. and an alternate map read in via <M> in color-command mode is that this
  2364. one is permanent. WARNING: If colors 0 and 1 decode to the same color,
  2365. your <H>elp screens will use the same color for both text and back-
  2366. ground, which makes them kind of difficult to read.
  2367.  
  2368. RAMVIDEO=no
  2369. If set, when you select a "Disk/RAM" video mode, the check for adequate
  2370. RAM is bypassed, and Fractint heads straight for your expanded memory
  2371. and/or hard disk.  This is useful where you may *technically* have
  2372. enough RAM for a particular video mode, but you may want to use it 
  2373. later for something else (like shelling to DOS).
  2374.  
  2375. FORMULAFILE=[formulafilename]
  2376. Lets you specify the default formula file for type=formula fractals
  2377. (the default is FRACTINT.FRM).  Handy if you want to generate one
  2378. of these fractal types in batch mode.
  2379.  
  2380. FORMULANAME=[formulaname]
  2381. Lets you specify the default formula name for type=formula fractals
  2382. (the default is no formula at all).  Required if you want to generate
  2383. one of these fractal types in batch mode, as this is the only way to
  2384. specify a formula name in that case.
  2385.  
  2386. ;
  2387. As usual, indicates the rest of the command line (or the rest of the
  2388. individual line inside command files) is a comment.
  2389.  
  2390. SOUND=off|x|y|z
  2391. We're all MUCH too busy to waste time with FRACTINT at work, and no
  2392. doubt you are too, so "sound=off" included only for use at home, to avoid
  2393. waking the kids or your Significant Other, late at night. (By the way,
  2394. didn't you tell yourself "just one more zoom on LambdaSine" an hour
  2395. ago?) Suggestions for a "boss" hot-key will be cheerfully ignored, as
  2396. this sucker is getting big enough without including a spreadsheet
  2397. screen too. The "sound=x/y/x" options are for the "attractor"
  2398. fractals, like the Lorenz fractals - they play with the sound on your
  2399. PC speaker as they are generating an image, based on the X or Y or Z
  2400. co-ordinate they are displaying at the moment.  At the moment, 
  2401. "sound=x" (or y or z) really doesn't work very well when using an
  2402. integer algorithm - try it with the floating-point toggle set, instead.
  2403.  
  2404. HERTZ=nnn
  2405. Adjusts the sound produced by the "sound=x/y/z" option.  Legal values
  2406. are 200 through 10000.
  2407.  
  2408.  
  2409.                            BATCH MODE
  2410.  
  2411. Two other arguments have special uses. It IS possible, believe it or
  2412. not, to become so jaded with the screen drawing process, so familiar
  2413. with the types and options, that you just want to hit a key and do
  2414. something else until the final images are safe on disk. It's
  2415. especially possible if you use <Tab> to note parameters for interesting
  2416. areas, or <B> to store them as lines in FRABATCH.BAT.
  2417.  
  2418. BATCH=yes
  2419. Run in batch mode -- that is, FRACTINT acts as if you had hit <S> to
  2420. save the image after drawing it (using defaults or whatever other
  2421. parameters you use here or in a command file), followed by exit to DOS.
  2422. The "VIDEO=" mode option is required.
  2423.  
  2424. BATCH=config
  2425. Starts a quick batch-mode run that creates a default FRACTINT.CFG file
  2426. from the full internal video table (FRACTINT.CFG is described in Sec.
  2427. 5).
  2428.  
  2429.  
  2430. SSTOOLS.INI
  2431.  
  2432. If you are familiar with Microsoft's TOOLS.INI or WINDOWS.INI configu-
  2433. ration files, the SSTOOLS.INI command file is used in the same way. In
  2434. particular, you designate a section of SSTOOLS.INI as belonging to a
  2435. particular program by beginning the section with a label in brackets.
  2436. FRACTINT looks for the label [fractint], and ignores any lines it finds
  2437. in the file belonging to any other label. If an SSTOOLS.INI file looks
  2438. like this:
  2439.  
  2440. [fractint]
  2441. sound=off                    ; (for home use only)
  2442. printer=hp                   ; my printer is a LaserJet
  2443. [startrek]
  2444. Aye, captain, but I dinna think the engines can take it!
  2445. [fractint]
  2446. inside=0                     ; using "traditional" black
  2447.  
  2448. FRACTINT will use only the second, third, and last lines.
  2449.  
  2450. (Why use a convention like that when FRACTINT is the only program
  2451. you know of that uses an SSTOOLS.INI file?  Because there are other
  2452. programs (such as Lee Crocker's PICLAB) that now use the same file, and
  2453. people working on other, sister programs to FRACTINT are going to read
  2454. that file. And just when you thought it was safe to download again..!)
  2455.  
  2456.  
  2457. 4. File Formats, Color Maps and All That
  2458.  
  2459. FRACTINT AND .GIF FILES
  2460.  
  2461. Since version 5.0, FRACTINT has had the <S>ave-to-disk command, which
  2462. stores screen images in the extremely compact, flexible .GIF (Graphics
  2463. Interchange Format) widely supported on Compuserve. Version 7.0 added
  2464. the <R>estore-from-disk capability. Unfortunately, this creates a
  2465. problem. The current official .GIF specification does not offer a place
  2466. to store the small amount of extra information that FRACTINT needs in
  2467. order to implement the <R> feature -- i.e., the parameters that let you
  2468. keep zooming, etc. so on as if the restored file had just been created
  2469. in this session.
  2470.  
  2471. FRACTINT gets around this restriction in a non-standard manner, saving
  2472. its application-specific information AFTER the official GIF terminator
  2473. character. This trick works with all of the popular GIF decoders that
  2474. we have tested (although some of them require renaming the file to
  2475. xxxx.GIF first).
  2476.  
  2477. We are not, however, claiming that these files are true .GIF files. For
  2478. one thing, information after the .GIF terminator has the potential to
  2479. confuse the on-line .GIF viewers used on Compuserve. For another, it is
  2480. the opinion of some .GIF developers that the addition of this extra
  2481. information violates the GIF spec. That's why we use the default
  2482. filetype .FRA instead.
  2483.  
  2484. If you wish to save FRACTINT images as true .GIF files, simply specify
  2485. .GIF as the extension in the SAVENAME argument ("SAVENAME=
  2486. somename.gif"). FRACTINT will detect the extension and drop the extra
  2487. data. You will NOT be able to fully restore such files with <R>,
  2488. because the information FRACTINT needs just isn't there. When the <R>
  2489. command encounters true .GIF files (whether FRACTINT created them or
  2490. not), it does the best it can and restores them as if they were un-
  2491. zoomable plasma clouds.
  2492.  
  2493. An easy way to convert an existing .FRA file into true .GIF format
  2494. suitable for uploading is something like this at the DOS prompt:
  2495.  
  2496. FRACTINT MYFILE SAVENAME=MYFILE.GIF BATCH=YES
  2497.  
  2498. FRACTINT will load MYFILE.FRA, save it in true .GIF format as
  2499. MYFILE.GIF, and return to DOS.
  2500.  
  2501. Note that the .GIF spec is constantly being reviewed, and it's entirely
  2502. possible that future enhancements will provide a standard way to store
  2503. application-specific information. We intend to use any such extensions
  2504. in an upward-compatible manner if and when they become available.
  2505.  
  2506. GIF and "Graphics Interchange Format" are trademarks of Compuserve
  2507. Incorporated, an H&R Block Company.
  2508.  
  2509.  
  2510. CONTINUOUS POTENTIAL
  2511.  
  2512. FRACTINT's images are usually calculated by the "level set" method,
  2513. producing bands of color corresponding to regions where the calculation
  2514. gives the same value. When viewed in 3D, most images other than plasma
  2515. clouds are like terraced landscapes: most of the surface is either
  2516. horizontal or vertical.
  2517.  
  2518. To get the best results with the "illuminated" 3D fill options 5 and 6,
  2519. there is an alternative approach that yields continuous changes in
  2520. colors. A 256-color MCGA/VGA video mode is mandatory to appreciate this
  2521. effect (it's hard to show continuous variation with only 4 or 16
  2522. colors!)
  2523.  
  2524. Continuous potential is approximated by calculating
  2525.  
  2526.          potential =  log(modulus)/2^iterations
  2527.  
  2528. where "modulus" is the orbit value (magnitude of the complex number)
  2529. when the modulus bailout was exceeded, at the "iterations" iteration.
  2530. Clear as mud, right?
  2531.  
  2532. Fortunately, you don't have to understand all the details. However,
  2533. there ARE a few points to understand. First, FRACTINT's criterion for
  2534. halting a fractal calculation, the "modulus bailout value", is general-
  2535. ly set to 4. Continuous potential is inaccurate at such a low value.
  2536.  
  2537. The bad news is that the integer math which makes the "mandel" and
  2538. "julia" types so fast imposes a hard-wired maximum value of 127. You
  2539. can still make interesting images from those types, though, so don't
  2540. avoid them. You will see "ridges" in the "hillsides." Some folks like
  2541. the effect.
  2542.  
  2543. The good news is that the other fractal types, particularly the
  2544. (generally slower) floating point algorithms, have no such limitation.
  2545. The even better news is that there is a floating-point algorithm for
  2546. the "mandel" and "julia" types.  To force the use of a floating-point
  2547. algorithm, use Fractint with the "FLOAT=YES" command-line toggle.  Only
  2548. a few fractal types like plasma clouds, the Barnsley IFS/IFS3d types,
  2549. and "test" are unaffected by this toggle.
  2550.  
  2551. The parameters for continuous potential are:
  2552.  
  2553.     potential=maxcolor[/slope[/modulus[/potfile]]]
  2554.  
  2555. "Maxcolor" is the color corresponding to zero potential, which plots as
  2556. the TOP of the mountain. Generally this should be set to one less than
  2557. the number of colors, e.g. 255 for VGA. Remember that the last few
  2558. colors of the default IBM VGA palette are BLACK, so you won't see what
  2559. you are really getting unless you change to a different palette.
  2560.  
  2561. "Slope" affects how rapidly the colors change -- the slope of the
  2562. "mountains" created in 3D. If this is too low, the palette will not
  2563. cover all the potential values and large areas will be black. If it is
  2564. too high, the range of colors in the picture will be much less than
  2565. those available. There is no easy way to predict in advance what these
  2566. values should be.
  2567.  
  2568. "Modulus" is the bailout value used to determine when an orbit has 
  2569. "escaped". Larger values give more accurate and smoother potential. A
  2570. value of 500 gives excellent results. As noted, this value must be 
  2571. <128 for the integer fractal types (if you select a higher number, they
  2572. will use 127).
  2573.  
  2574. "Potfile" is a filename to store the potential image in compressed
  2575. TARGA format, with 16 bits per pixel. If you save the image in the
  2576. normal way and then view it in 3D, the illumination modes 5 and 6 will
  2577. work fine, but the colors will look a bit granular. This is because
  2578. even with 256 colors, the continuous potential is being truncated to
  2579. integers. If the "potfile" parameter is given, much smoother pictures
  2580. can be obtained. But beware: even these compressed files still use up
  2581. to 2 bytes per pixel, so they can get quite large.
  2582.  
  2583. The following commands can be used to recreate the image that Mark
  2584. Peterson first prototyped for us, and named "MtMand":
  2585.  
  2586.                 TYPE=mandel
  2587.                 CORNERS=-0.19920/-0.11/1.0/1.06707
  2588.                 INSIDE=255
  2589.                 MAXITER=255
  2590.                 POTENTIAL=255/2000/1000/potfile.tga
  2591.                 PASSES=1
  2592.                 FLOAT=yes
  2593.  
  2594. This assumes a 256-color video mode.
  2595.  
  2596.  
  2597. PALETTE MAPS 
  2598.  
  2599. If you have a VGA, Super-VGA, 8514/A, or TARGA video adapter, you can
  2600. save and restore your color palette using special color-map files
  2601. and either the command-line "map=" option, or the "D", "A", "S",
  2602. and "M" color-cycling mode commands.  These color-maps are ASCII files
  2603. set up as a series of RGB triplet values (one triplet per line,
  2604. encoded as the red, green, and blue [RGB] components of the color).
  2605. Note that the color values are in TARGA/GIF format - values go from
  2606. 0 (low) to 255 (high), so for a VGA adapter they get divided by 4
  2607. before being stuffed into the VGA's Video-DAC registers (so '6'
  2608. and '7' end up referring to the same color value).  The default
  2609. filetype for color-map files is ".MAP".
  2610.  
  2611. The distribution file contains sample .MAP files for you to examine
  2612. and modify - DEFAULT.MAP (the VGA start-up values), ALTERN.MAP
  2613. (the famous "Peterson-Vigneau Pseudo-Grey Scale"), GAMMA1.MAP and
  2614. GAMMA2.MAP (Lee Crocker's response to ALTERN.MAP), and LANDSCAP.MAP
  2615. Guruka Singh Khalsa's favorite color-map for plasma "landscapes").
  2616.  
  2617.  
  2618. 5. Hardware Support
  2619.  
  2620. True to the spirit of public-domain programming, FRACTINT makes only a
  2621. limited attempt to verify that your video adapter can run in the mode you
  2622. specify, or even that an adapter is present, before writing to it.
  2623. Hence the warning to check your "VIDEO=" argument before using a new
  2624. version, in which the old key combo may now call an ultraviolet holo-
  2625. graphic mode.
  2626.  
  2627. FRACTINT also assumes that every EGA adapter has a full 256K of memory
  2628. (and can therefore display 640 x 350 x 16 colors), but does nothing to
  2629. verify that fact before slinging pixels.
  2630.  
  2631.  
  2632. NOTES ON MODES, "STANDARD" AND OTHERWISE
  2633.  
  2634. FRACTINT uses a video adapter table in the "C" program for everything
  2635. it needs to know about any particular adapter/mode combination. This
  2636. table can contain information for up to 98 adapter/mode combinations,
  2637. and is automatically tied to 84 keys (F2-F10, their Control/ Shift/Alt
  2638. variants, and many Alt-x keypad combos) when the program is running.
  2639. The table entries, and the function keys they are tied to, are dis-
  2640. played as part of the help screens.
  2641.  
  2642. This table makes adding support for various third-party video cards and
  2643. their modes much easier, at least for the ones that pretend to be a
  2644. standard adapter with more dots and/or colors. There is even a special
  2645. "roll-your-own" video mode (mode 19) enabling those of you with "C"
  2646. compilers and a copy of the FRACTINT source to generate video modes
  2647. supporting whatever adapter you may have. You can customize the table
  2648. using the external configuration file FRACTINT.CFG, described below.
  2649.  
  2650. The table as currently distributed begins with nine standard and
  2651. several non-standard IBM video modes that have been exercised success-
  2652. fully with a PS/2 model 80. These entries, coupled with the descriptive
  2653. comments in the table definition and the information supplied (or that
  2654. should have been supplied!) with your video adapter, should be all you
  2655. need to add your own entries.
  2656.  
  2657.  
  2658. 320 x 400 x 256 and 360 x 480 x 256 VGA MODES
  2659. The IBM VGA adapter is a highly programmable device, and can be set up
  2660. to display many video-mode combinations beyond those "officially"
  2661. supported by the IBM BIOS. These video modes are perfectly legal, but
  2662. temporarily reprogram the adapter (IBM or fully register-compatible) in
  2663. a non-standard manner that the BIOS does not recognize. Because of
  2664. this, the program cannot send any text to the screen while it is in one
  2665. of these modes (the BIOS would garbage it). An internal flag inhibits
  2666. all text output while the screen is in one of these video modes.
  2667. FRACTINT's <H> and <Tab> commands still work, because they temporarily
  2668. switch the screen to an alternate video mode.
  2669.  
  2670.  
  2671. 8514/A MODES
  2672. The IBM 8514/A modes use IBM's software interface, and require the pre-
  2673. loading of IBM's HDIDLOAD TSR utility. There are two sets of 8514/A
  2674. modes: full sets (640x480, 1024x768) which cover the entire screen and
  2675. do NOT have a border color (so that you cannot tell when you are
  2676. "paused" in a color-cycling mode), and partial sets (632x474, 1016x762)
  2677. with small border areas which do turn white when you are paused in
  2678. color-cycling mode. Also, while these modes are declared to be 256-
  2679. color, if you do not have your 8514/A adapter loaded with its full
  2680. complement of memory you will actually be in 16-color mode. Finally,
  2681. because IBM's interface does not handle drawing single pixels very well
  2682. (we have to draw a 1x1 pixel "box"), generating the zoom box is excru-
  2683. ciatingly slow. Still, it works!
  2684.  
  2685.  
  2686. SUPER-EGA AND SUPER-VGA MODES
  2687. After the IBM and quasi-pseudo-demi-IBM modes, the table contains an
  2688. ever-increasing number of entries for other adapters. Almost all of
  2689. these entries have been added because someone like you sent us spec
  2690. sheets, or modified FRACTINT to support them and then informed us about
  2691. it.  With version 12.0, we've added both John Bridges' SuperVGA
  2692. Autodetecting logic *and* VESA adapter detection, so that many of the
  2693. brand-specific SuperVGA modes have been collapsed into a single function
  2694. key.  There is now exactly one function key for SuperVGA 640x480x256
  2695. mode, for instance.  
  2696.  
  2697.  
  2698. TARGA MODES
  2699. TARGA support for FRACTINT is provided courtesy of Joe McLain. Be aware
  2700. that there are a LOT of possible TARGA configurations, and a LOT of
  2701. opportunities for a TARGA board and a VGA or EGA board to interfere
  2702. with each other, and we may not have all of them smoothed away yet.
  2703. Also, the TARGA boards have an entirely different color-map scheme than
  2704. the VGA cards, and at the moment they cannot be run through the color-
  2705. cycling menu. The "MAP=" argument (Sec. 3), however, works with both
  2706. TARGA and VGA boards and enables you to redefine the default color maps
  2707. with either board.
  2708.  
  2709.  
  2710. "RAM-VIDEO" AND "DISK-VIDEO" MODES
  2711. These "video modes" do not involve a video adapter at all. They use
  2712. either your spare RAM (if you have enough), your spare expanded memory
  2713. (if you have it, and have enough of it), or your disk drive (as file
  2714. FRACTINT.DSK) to store the fractal image. These modes are useful for
  2715. creating images beyond the capacity of your video adapter, right up to
  2716. the current internal limit of 2048 x 2048 x 256, and for background
  2717. processing under multi-tasking DOS managers such as DESQview.
  2718.  
  2719. The zoom box is disabled during these modes (you couldn't see where it
  2720. is anyway). To eliminate thrashing, if your "video" is really on a hard
  2721. disk, so are features such as orbit display, dual-pass mode,
  2722. solid-guessing, symmetry checks and (sorry) plasma clouds that require
  2723. simultaneous access to several lines of the "display.".
  2724.  
  2725. On a PC with 640K of memory running only FRACTINT under DOS, "disk-
  2726. video" modes up to 640x480x256 fit into RAM, and any higher-resolution
  2727. modes end up going to expanded memory or disk. While you are in these
  2728. modes, your screen will display text information that lets you know
  2729. whether you are using your RAM or your disk drive and what portion of
  2730. the "screen" is being read from or written to.
  2731.  
  2732. "TWEAKED" VGA MODES
  2733. FRACTINT contains code that sets up the IBM (or any truly register-
  2734. compatible) VGA adapter for several extended modes such as 704x528,
  2735. 736x552, 768x576, and 800x600. It does this by programming the VGA
  2736. controller to use the fastest dot-clock on the IBM adapter (28.322
  2737. MHz), throwing more pixels, and reducing the refresh rate to make up
  2738. for it.
  2739.  
  2740. These modes push many monitors beyond their rated specs, in terms of
  2741. both resolution and refresh rate. Signs that your monitor is having
  2742. problems with a particular "tweaked" mode include:
  2743.  
  2744. * vertical or horizontal overscan (displaying dots beyond the edges of
  2745.   your visible CRT area)
  2746.  
  2747. * flickering (caused by a too-slow refresh rate)
  2748.  
  2749. * vertical roll or total garbage on the screen (your monitor simply
  2750.   can't keep up, or is attempting to "force" the image into a pre-set
  2751.   mode that doesn't fit).
  2752.  
  2753. We have successfully tested the modes up to 768x576 on an IBM PS/2
  2754. Model 80 connected to IBM 8513, IBM 8514, NEC Multisync II, and Zenith
  2755. 1490 monitors (all of which exhibit some overscan and flicker at the
  2756. highest rates), and have tested 800x600 mode on the NEC Multisync II
  2757. (although it took some twiddling of the vertical-size control).
  2758.  
  2759.  
  2760. FRACTINT.CFG
  2761.  
  2762. If you have a favorite adapter/video mode that you would like to add to
  2763. FRACTINT... if you want to remove table entries that do not apply to
  2764. your system... if you're bothered that your favorite mode requires the
  2765. <Alt><Left-Shift><Swizzlestick> key combination... or if you are using
  2766. a non-enhanced keyboard so that you can't USE that combination...
  2767. relief is here, and without even learning "C"!
  2768.  
  2769. FRACTINT will create an external, editable video configuration file
  2770. called FRACTINT.CFG, and from then on will use that instead of its
  2771. internal table as long as it can locate it somewhere along the DOS
  2772. path. Enter FRACTINT BATCH=CONFIG, and you will get a default file with
  2773. an entry for every one of the internal video table entries, and you can
  2774. go to work on it with a text editor.
  2775.  
  2776. Any line in the file that begins with a tab or a space (or is empty) is
  2777. treated as a comment. The rest of the lines must consist of ten fields
  2778. separated by commas. The ten fields are defined as:
  2779.  
  2780. 1. The name of the adapter/video mode (25 chars max, no leading
  2781. blanks). The adapter is set up for that mode via INT 10H, with:
  2782. 2. AX = this,
  2783. 3. BX = this,
  2784. 4. CX = this, and
  2785. 5. DX = this (hey, having all these registers wasn't OUR idea!)
  2786. 6. An encoded value describing how to write to your video memory in
  2787. that mode. Currently available codes are:
  2788.   1) Use the BIOS (INT 10H, AH=12/13, AL=color) (last resort - SLOW!)
  2789.   2) Pretend it's a (perhaps super-res) EGA/VGA
  2790.   3) Pretend it's an MCGA
  2791.   4) SuperVGA 256-Color mode using the Tseng Labs chipset
  2792.   5) SuperVGA 256-Color mode using the Paradise chipset
  2793.   6) SuperVGA 256-Color mode using the Video-7 chipset
  2794.   7) Non-Standard IBM VGA 360 x 480 x 256-Color mode
  2795.   8) SuperVGA 1024x768x16 mode for the Everex chipset
  2796.   9) TARGA video modes
  2797.  10) HERCULES video mode
  2798.  11) Non-Video [disk or RAM] "video"
  2799.  12) 8514/A video modes
  2800.  13) CGA 320x200x4-color and 640x200x2-color modes
  2801.  14) Reserved for Tandy 1000 video modes
  2802.  15) SuperVGA 256-Color mode using the Trident chipset
  2803.  16) SuperVGA 256-Color mode using the Chips & Tech chipset
  2804.  17) SuperVGA 256-Color mode using the ATI VGA Wonder chipset
  2805.  18) SuperVGA 256-Color mode using the EVEREX chipset
  2806.  19) Roll-your-own video mode (as you've defined it in YOURVID.C)
  2807.  20) SuperVGA 1024x768x16 mode for the ATI VGA Wonder chipset
  2808.  21) SuperVGA 1024x768x16 mode for the Tseng Labs chipset
  2809.  22) SuperVGA 1024x768x16 mode for the Trident chipset
  2810.  23) SuperVGA 1024x768x16 mode for the Video 7 chipset
  2811.  24) SuperVGA 1024x768x16 mode for the Paradise chipset
  2812.  25) SuperVGA 1024x768x16 mode for the Chips & Tech chipset
  2813.  26) SuperVGA 1024x768x16 mode for the Everex Chipset
  2814.  27) SuperVGA Auto-Detect mode (we poke around looking for your adapter type)
  2815.  28) VESA modes
  2816.  
  2817. 7. The number of pixels across the screen (X - 160 to 2048)
  2818. 8. The number of pixels down the screen (Y - 160 to 2048)
  2819. 9. The number of available colors (2, 4, 16, or 256)
  2820. 10. A comment describing this mode (25 chars max, leading blanks are OK)
  2821.  
  2822. NOTE that the AX, BX, CX, and DX fields are generated (and read back)
  2823. using hexadecimal notation (fifteen ==> 'f', sixteen ==> '10'), because
  2824. that's the way most adapter documentation describes it. The other
  2825. fields use standard decimal notation.
  2826.  
  2827. If you look closely at the default entries, you will notice that the
  2828. IBM VGA entries labeled "tweaked" and "non standard" have entries in
  2829. the table with AX = BX = CX = 0, and DX = some other number. Those are
  2830. special flags that we used to tell the program to custom-program the
  2831. VGA adapter, and are NOT undocumented BIOS calls. Maybe they should be,
  2832. but they aren't.
  2833.  
  2834. If you have a fancy adapter and a new video mode that works on it, and
  2835. it is not currently supported, PLEASE GET THAT INFORMATION TO US!  We
  2836. will add the video mode to the list on our next release, and give you
  2837. credit for it. Which brings up another point: If you can confirm that a
  2838. particular video adapter/mode works (or that it doesn't), and the
  2839. program says it is UNTESTED, please get that information to us also.
  2840. Thanks in advance!
  2841.  
  2842.  
  2843. 6. Fractals and the PC
  2844.  
  2845.  
  2846. A LITTLE HISTORY
  2847.  
  2848. Like new forms of life, new branches of mathematics and science don't
  2849. appear from nowhere. The ideas of fractal geometry can be traced to the
  2850. late nineteenth century, when mathematicians created shapes -- sets of
  2851. points -- that seemed to have no counterpart in nature.  By a wonderful
  2852. irony, the "abstract" mathematics descended from that work has now
  2853. turned out to be MORE appropriate than any other for describing many
  2854. natural shapes and processes.
  2855.  
  2856. Perhaps we shouldn't be surprised.  The Greek geometers worked out the
  2857. mathematics of the conic sections for its formal beauty; it was two
  2858. thousand years before Copernicus and Brahe, Kepler and Newton overcame
  2859. the preconception that all heavenly motions must be circular, and found
  2860. the ellipse, parabola, and hyperbola in the paths of planets, comets,
  2861. and projectiles.
  2862.  
  2863. In the 17th century Newton and Leibniz created calculus, with its
  2864. techniques for "differentiating" or finding the derivative of functions
  2865. -- in geometric terms, finding the tangent of a curve at any given
  2866. point. True, some functions were discontinuous, with no tangent at a
  2867. gap or an isolated point. Some had singularities: abrupt changes in
  2868. direction at which the idea of a tangent becomes meaningless. But these
  2869. were seen as exceptional, and attention was focused on the "well-
  2870. behaved" functions that worked well in modeling nature.
  2871.  
  2872. Beginning in the early 1870s, though, a 50-year crisis transformed
  2873. mathematical thinking. Weierstrass described a function that was
  2874. continuous but nondifferentiable -- no tangent could be described at
  2875. any point. Cantor showed how a simple, repeated procedure could turn a
  2876. line into a dust of scattered points, and Peano generated a convoluted
  2877. curve that eventually touches every point on a plane. These shapes
  2878. seemed to fall "between" the usual categories of one-dimensional lines,
  2879. two-dimensional planes and three-dimensional volumes. Most still saw
  2880. them as "pathological" cases, but here and there they began to find
  2881. applications.
  2882.  
  2883. In other areas of mathematics, too, strange shapes began to crop up.
  2884. Poincare attempted to analyze the stability of the solar system in the
  2885. 1880s and found that the many-body dynamical problem resisted tradi-
  2886. tional methods. Instead, he developed a qualitative approach, a "state
  2887. space" in which each point represented a different planetary orbit, and
  2888. studied what we would now call the topology -- the "connectedness" --
  2889. of whole families of orbits. This approach revealed that while many
  2890. initial motions quickly settled into the familiar curves, there were
  2891. also strange, "chaotic" orbits that never became periodic and predict-
  2892. able.
  2893.  
  2894. Other investigators trying to understand fluctuating, "noisy" phenomena
  2895. -- the flooding of the Nile, price series in economics, the jiggling of
  2896. molecules in Brownian motion in fluids -- found that traditional models
  2897. could not match the data. They had to introduce apparently arbitrary
  2898. scaling features, with spikes in the data becoming rarer as they grew
  2899. larger, but never disappearing entirely.
  2900.  
  2901. For many years these developments seemed unrelated, but there were
  2902. tantalizing hints of a common thread. Like the pure mathematicians'
  2903. curves and the chaotic orbital motions, the graphs of irregular time
  2904. series often had the property of self-similarity: a magnified small
  2905. section looked very similar to a large one over a wide range of scales.
  2906.  
  2907.  
  2908. WHO IS THIS GUY, ANYWAY?
  2909.  
  2910. While many pure and applied mathematicians advanced these trends, it is
  2911. Benoit Mandelbrot above all who saw what they had in common and pulled
  2912. the threads together into the new discipline.
  2913.  
  2914. He was born in Warsaw in 1924, and moved to France in 1935. In a time
  2915. when French mathematical training was strongly analytic, he visualized
  2916. problems whenever possible, so that he could attack them in geometric
  2917. terms.  He attended the Ecole Polytechnique, then Caltech, where he
  2918. encountered the tangled motions of fluid turbulence.
  2919.  
  2920. In 1958 he joined IBM, where he began a mathematical analysis of
  2921. electronic "noise" -- and began to perceive a structure in it, a
  2922. hierarchy of fluctuations of all sizes, that could not be explained
  2923. by exiting statistical methods. Through the years that followed, one
  2924. seemingly unrelated problem after another was drawn into the growing
  2925. body of ideas he would come to call fractal geometry.
  2926.  
  2927. As computers gained more graphic capabilities, the skills of his mind's
  2928. eye were reinforced by visualization on display screens and plotters.
  2929. Again and again, fractal models produced results -- series of flood
  2930. heights, or cotton prices -- that experts said looked like "the real
  2931. thing."
  2932.  
  2933. Visualization was extended to the physical world as well. In a provoc-
  2934. ative essay titled "How Long Is the Coast of Britain?" Mandelbrot noted
  2935. that the answer depends on the scale at which one measures: it grows
  2936. longer and longer as one takes into account every bay and inlet, every
  2937. stone, every grain of sand. And he codified the "self-similarity"
  2938. characteristic of many fractal shapes -- the reappearance of geometri-
  2939. cally similar features at all scales.
  2940.  
  2941. First in isolated papers and lectures, then in two editions of his
  2942. seminal book, he argued that many of science's traditional mathematical
  2943. models are ill-suited to natural forms and processes: in fact, that
  2944. many of the "pathological" shapes mathematicians had discovered genera-
  2945. tions before are useful approximations of tree bark and lung tissue,
  2946. clouds and galaxies.
  2947.  
  2948. Mandelbrot was named an IBM Fellow in 1974, and continues to work at
  2949. the IBM Watson Research Center. He has also been a visiting professor
  2950. and guest lecturer at many universities.
  2951.  
  2952.  
  2953. A LITTLE CODE
  2954.  
  2955. PERIODICITY LOGIC: The "Mandelbrot Lake" in the center of the M-set
  2956. images is the traditional bane of plotting programs. It sucks up the
  2957. most computer time because it always reaches the iteration limit -- and
  2958. yet the most interesting areas are invariably right at the edge the
  2959. lake.
  2960.  
  2961. Thanks to Mark Peterson for pointing out (well, he more like beat us
  2962. over the head until we paid attention) that the iteration values in the
  2963. middle of Mandelbrot Lake tend to decay to periodic loops (i.e., Z(n+m)
  2964. == Z(n), a fact that is pointed out on pages 58-61 of "The Beauty of
  2965. Fractals"). An intelligent program (like the one he wrote) would check
  2966. for this periodicity once in a while, recognize that iterations caught
  2967. in a loop are going to max out, and bail out early.
  2968.  
  2969. For speed purposes, the current version of the program turns this
  2970. checking algorithm on only if the last pixel generated was in the lake.
  2971. (The checking itself takes a small amount of time, and the pixels on
  2972. the very edge of the lake tend to decay to periodic loops very slowly,
  2973. so this compromise turned out to be the fastest generic answer).
  2974.  
  2975. Try a full M-set plot with a 1000-iteration maximum with any other
  2976. program, and then try it on this one for a pretty dramatic proof of the
  2977. value of periodicity checking.
  2978.  
  2979. You can get a visual display of the periodicity effects if you press
  2980. <O>rbits while plotting. This toggles display of the intermediate
  2981. iterations during the generation process.  It also gives you an idea of
  2982. how much work your poor little PC is going through for you!  If you use
  2983. this toggle, it's best to disable solid-guessing first using <1> or
  2984. <2> because in its second pass, solid-guessing bypasses many of the
  2985. pixel calculations precisely where the orbits are most interesting.
  2986.  
  2987. Mark was also responsible for pointing out that 16-bit integer math was
  2988. good enough for the first few levels of M/J images, where the round-off
  2989. errors stay well within the area covered by a single pixel. FRACTINT
  2990. now uses 16-bit math where applicable, which makes a big difference on
  2991. non-32-bit PCs.
  2992.  
  2993.  
  2994. LIMITATIONS OF INTEGER MATH (and how we now get around it)
  2995.  
  2996. By default, FRACTINT uses 16-bit and/or 32-bit integer math to generate
  2997. nearly all its fractal types. The advantage of integer math is speed: this
  2998. is by far the fastest such plotter that we have ever seen on any PC. The
  2999. disadvantage is an accuracy limit. Integer math represents numbers like
  3000. 1.00 as 32-bit integers of the form [1.00 * (2^29)] (approximately
  3001. 500,000,000 digits!) for the Mandelbrot and Julia sets. Other integer
  3002. fractal types use a bitshift of 24 rather than 29, so 1.0 is stored
  3003. internally as [1.00 * (2^*24)]. This yields accuracy of better than 8
  3004. significant digits, and works fine... until the initial values of the
  3005. calculations on consecutive pixels differ only in the ninth decimal
  3006. place.
  3007.  
  3008. At that point, if Fractint has a floating-point algorithm handy for
  3009. that particular fractal type (and virtually all of the fractal types 
  3010. have one these days), it will silently switch over to the
  3011. floating-point algorithm and keep right on going.  Fair warning -
  3012. if you don't have an FPU, the effect is that of a rocket sled hitting
  3013. a wall of jello, and even if you do, the slowdown is noticable.
  3014.  
  3015. If it has no floating-point algorithm, FRACTINT does the best it can:
  3016. it switches to its minimal drawing mode, with adjacent pixels having
  3017. initial values differing by 1 (really 0.000000002), and disables zooming
  3018. and panning.  If you are stuch with an integer algorithm, you can reach
  3019. minimal mode with your fifth consecutive "maximum zoom", each of which
  3020. covers about 0.25% of the previous screen. By then your full-screen image
  3021. is an area less than 1/(10^13)th [~0.0000000000001] the area of the
  3022. initial screen.
  3023.  
  3024. Think of it this way: at minimal drawing mode, your VGA display
  3025. would have to have a surface area of over one million square miles just
  3026. to be able to display the entire M-set using the integer algorithms.
  3027. Using the floating-point algorithms, your display would have to
  3028. be big enough to fit the entire solar system out to the orbit of
  3029. Saturn inside it.  So there's a considerable saving on hardware,
  3030. electricity and desk space involved here.  Also, you don't have to
  3031. take out asteroid insurance.
  3032.  
  3033. THE FRACTINT "FRACTAL ENGINE" ARCHITECTURE
  3034.  
  3035. Several of the authors would never ADMIT this, but FRACTINT has 
  3036. evolved a powerful and flexible architecture that makes adding 
  3037. new fractals very easy. (They would never admit this because they 
  3038. pride themselves on being the sort that mindlessly but happily 
  3039. hacks away at code and "sees if it works and doesn't hang the 
  3040. machine".) 
  3041.  
  3042. Many fractal calculations work by taking a rectangle in the 
  3043. complex plane, and, point by point, calculating a color 
  3044. corresponding to that point. Furthermore, the color calculation 
  3045. is often done by iterating a function over and over until some 
  3046. bailout condition is met.
  3047.  
  3048. In implementing such a scheme, there are three fractal-specific 
  3049. calculations that take place within a framework that is pretty 
  3050. much the same for them all.  Rather than copy the same code over 
  3051. and over, we created a standard fractal engine that calls three 
  3052. functions that may be bolted in temporarily to the engine.  The 
  3053. "bolting in" process uses the C language mechanism of variable 
  3054. function pointers.
  3055.  
  3056. These three functions are: 
  3057.  
  3058.      1) a setup function that is run once per image, to do any 
  3059.      required initialization of variables,
  3060.  
  3061.      2) a once-per-pixel function that does whatever 
  3062.      initialization has to be done to calculate a color for one 
  3063.      pixel, and
  3064.  
  3065.      3) a once-per-orbit-iteration function, which is the 
  3066.      fundamental fractal algorithm that is repeatedly iterated in 
  3067.      the fractal calculation.
  3068.  
  3069. The common framework that calls these functions can contain all 
  3070. sorts of speedups, tricks, and options that the fractal 
  3071. implementor need not worry about.  All that is necessary is to 
  3072. write the three functions in the correct way, and BINGO! - all 
  3073. options automatically apply. What makes it even easier is that 
  3074. usually one can re-use functions 1) and 2) written for other 
  3075. fractals, and therefore only need to write function 3).
  3076.  
  3077. Then it occurred to us that there might be more than one sort of 
  3078. fractal engine, so we even allowed THAT to be bolted in. And we 
  3079. created a data structure for each fractal that includes pointers 
  3080. to these four functions, various prompts, a default region of the 
  3081. complex plane, and various miscellaneous bits of information that 
  3082. allow toggling between Julia and Mandelbrot or toggling between 
  3083. the various kinds of math used in implementation.
  3084.  
  3085. That sounds pretty flexible, but there is one drawback - you have 
  3086. to be a C programmer and have a C compiler to make use of it! So 
  3087. we took it a step further, and designed a built-in high level 
  3088. compiler, so that you can enter the formulas for the various 
  3089. functions in a formula file in a straight-forward algebra-like 
  3090. language, and FRACTINT will compile them and bolt them in for 
  3091. you!
  3092.  
  3093. There is a terrible down side to this flexibility.  FRACTINT 
  3094. users everywhere are going beserk. Fractal-inventing creativity 
  3095. is running rampant. Proposals for new fractal types are clogging 
  3096. the mail and the telephones.
  3097.  
  3098. All we can say is that non-productivity software has never been 
  3099. so potent, and we're sorry, it's our fault!
  3100.  
  3101.  
  3102. FRACTINT was compiled using Microsoft C 5.1 and Microsoft Assembler 5.1
  3103. using the "Medium" model. Note that the assembler code uses the "C"
  3104. model option added to version 5.1, and must be assembled with the /MX
  3105. switch to link with the "C" code. Because it has become too large to
  3106. distribute comfortably as a single compressed file, and because many
  3107. downloaders have no intention of ever modifying it, it is now distrib-
  3108. uted as two files: one containing FRACTINT.EXE, auxiliary files and
  3109. this document, and another containing complete source code (including a
  3110. .MAK file and MAKEFRAC.BAT).
  3111.  
  3112.  
  3113. APPENDIX A:
  3114.                            MATHEMATICS OF THE FRACTAL TYPES
  3115.  
  3116.  
  3117. Fractal Type(s)             Formula(s) used
  3118. -----------------------     ---------------------------------------------
  3119. Mandel, Julia               Z(n+1) = Z(n)^2 + C
  3120. Newton, Newtbasin           (roots of) Z^n - 1, wnere n is an integer
  3121. ComplexNewton, ComplexBasin (roots of) Z^a - b, where a,b are complex
  3122. plasma                      (see the Plasma section for details)
  3123. Mandelsine, Lambdasine      Z(n+1) = Lambda * sine(Z(n)) + C
  3124. Mandelcos, Lambdacos        Z(n+1) = Lambda * cos(Z(n)) + C
  3125. Mandelexp, Lambdaexp        Z(n+1) = Lambda * exp(Z(n)) + C
  3126. Mandelsinh, Lambdasinh      Z(n+1) = Lambda * sinh(Z(n)) + C
  3127. Mandelcosh, Lambdacosh      Z(n+1) = Lambda * cosh(Z(n)) + C
  3128. BarnsleyM1, BarnsleyJ1      Z(n+1) = (Z(n)-1) * C if Real(z) >= 0
  3129.                              else    (Z(n)+1) * modulus(C)/C
  3130. BarnsleyM2, BarnsleyJ2      Z(n+1) = (Z(n)-1) * C if Real(Z(n))*Imag(C)
  3131.                                      +Real(C)*Imag(Z(n)) >= 0
  3132.                              else    (Z(n)+1) * C
  3133. BarnsleyM3, BarnsleyJ3      Z(n+1) = (Real(Z(n))^2 - Imag(Z(n))^2 - 1)
  3134.                                     + i * (2 * Real(Z((n)) * Imag(Z((n)))
  3135.                                       if Real(Z(n) > 0
  3136.                              else    (Real(Z(n))^2 - Imag(Z(n))^2 - 1
  3137.                                     + lambda * Real(Z(n))
  3138.                                     + i * (2 * Real(Z((n)) * Imag(Z((n))
  3139.                                            + lambda * Real(Z(n))
  3140. Sierpinski                  Z(n+1) = (2x, 2y - 1) if y > .5
  3141.                              else    (2x - 1, 2y) if x > .5
  3142.                              else    (2X, 2y)
  3143. MandelLambda, Lambda        Z(n+1) = (C) * (Z(n)^2) + C
  3144. MarksMandel, MarksJulia     Z(n+1) = (C^(Period-1)) * (Z(n)^2) + C
  3145.                             ("Period" is a parameter)
  3146. Cmplxmarksmand,Cmplxmarksjul Same as MarksMandel and MarksJulia except period    
  3147.                             parameter is complex rather than real
  3148. Unity                       (see the Unity section for details)
  3149. ifs, ifs3D                  (see the IFS section for details)
  3150. Mandel4, Julia4             Z(n+1) = Z(n)^4 + C
  3151. Test                        (as distributed, as simple Mandelbrot fractal)
  3152. Mansinzsqrd, Julsinzsqrd    Z(n+1) = Z(n)^2 + sin(Z(n)) + C
  3153. Manzpower, Julzpower        Z(n+1) = Z(n)^M + C (M is a parameter)
  3154. Mandel4/Julia4              Special case of manzpower and julzpower (M=4)
  3155. Manzzpwr, Julzzpwr          Z(n+1) = Z(n)^Z(n) + Z(n)^M + C
  3156. Mansinexp, Julsinexp        Z(n+1) = sin(Z(n)) + e^(Z(n)) + C
  3157. popcorn                     Z(n+1) = x(n+1) + i * y(n+1), where
  3158.                             x(n+1) = x(n) - 0.05*sin(y(n)) + tan(3*y(n)) 
  3159.                             y(n+1) = y(n) - 0.05*sin(x(n)) + tan(3*x(n)) 
  3160. demm, demj                  (Mandelbrot, Julia fractals calculated and
  3161.                             colored using the "Distance Estimator" method
  3162. Bifurcation                 (see the Bifurcation section for details)
  3163. Lorenz, Lorenz3d            Lorenz Attractor - orbits of differential
  3164.                             equation:
  3165.                             dx/dt = -a*x + a*y
  3166.                             dy/dt =  b*x - y   -z*x
  3167.                             dz/dt = -c*z + x*y
  3168.                             Solution generated by 1st order Taylor series:
  3169.                             xnew = x + (-a*x*dt) + (a*y*dt)
  3170.                             ynew = y + (b*x*dt) - (y*dt) - (z*x*dt)
  3171.                             znew = z + (-c*z*dt) + (x*y*dt)
  3172.                             (defaults: dt = .02, a = 5, b = 15, c = 1)
  3173.                             (Lorenz3D is the Lorenz Attractor with the
  3174.                             addition of 3D perspective transformations
  3175.                             as specified by the IFS <E>ditor's
  3176.                             transformation option)
  3177. Rossler3d                   Orbit is solution to differential equation:
  3178.                             dx/dt = -y -z
  3179.                             dy/dt = x + a*y
  3180.                             dz/dt = b + x*z - c*z
  3181.                             Solution via first order Taylor series:
  3182.                             xnew = x - y*dt -   z*dt
  3183.                             ynew = y + x*dt + a*y*dt 
  3184.                             znew = z + b*dt + x*z*dt - c*z*dt
  3185.                             Default params are dt= .04, a= .2, b= .2, c= 5.7
  3186. Henon                       Orbit generated by:
  3187.                             xnew =  1 + y - a*x*x
  3188.                             ynew =  b*x
  3189.                             The default parameters are a=1.4 and b=.3.
  3190. Pickover                    Orbit generated by:
  3191.                             xnew = sin(a*y) - z*cos(b*x)
  3192.                             ynew = z*sin(c*x) - cos(d*y)
  3193.                             znew = sin(x)
  3194.                             Default params are: a=2.24, b=.43, c=-.65, d=-2.43
  3195. Gingerbreadman              Orbit generated by:
  3196.                             xnew = 1 - y + |x|
  3197.                             ynew = x
  3198. Diffusion                   See diffusion type description
  3199. Julibrot                    Same as Mandel and Julia - see type description
  3200.  
  3201. Here is an *ATTEMPTED* explanation of what the inside=bof60 and inside=bof61
  3202. options do. This explanation is hereby dedicated to Adrian Mariano, who
  3203. badgered it out of us! For the *REAL* explanation, see "Beauty of Fractals",
  3204. page 62. Let p(z) be the function that is repeatedly iterated to generate a
  3205. fractal using the escape-time algorithm.  For example, p(z) = z^2+c in the
  3206. case of a Julia set. Then let pk(z) be the result of iterating the function
  3207. p for k iterations. (The "k" should be shown as a superscript.) We could
  3208. also use the notation pkc(z) when the function p has a parameter c, as it
  3209. does in our example.  Now hold your breath and get your thinking cap on:
  3210. Define a(c) = inf{|pck(0)|:k=1,2,3,...}. In English - a(c) is the greatest 
  3211. lower bound of the images of zero of as many iterations as you like. Put
  3212. another way, a(c) is the closest to the origin any point in the orbit 
  3213. starting with 0 gets. Then the index (c) is the value of k (the iteration)
  3214. when that closest point was achieved.  Since there may be more than one,
  3215. index(c) is the least such. Got it?  Good, because the "Beauty of Fractals"
  3216. explanation of this, is, ahhhh, *TERSE* ! Now for the punch line.
  3217. Inside=bof60 colors the lake alternating shades according to the level sets
  3218. of a(c).  Each band represents solid areas of the fractal where the closest
  3219. value of the orbit to the origin is the same. Inside=bof61 show domains where
  3220. index(c) is constant.  That is, areas where the iteration when the orbit 
  3221. swooped closest to the origin has the same value. Well, folks, that's the 
  3222. best we can do! Improved explanations will be accepted for the next edition!
  3223.  
  3224. The following trig identities are invaluable for coding fractals that
  3225. use complex-valued transcendental functions.
  3226.  
  3227.    e^(x+iy) = (e^x)cos(y) + i(e^x)sin(y)
  3228.    sin(x+iy) = sin(x)cosh(y) + icos(x)sinh(y)
  3229.    cos(x+iy) = cos(x)cosh(y) - isin(x)sinh(y)
  3230.    sinh(x+iy) = sinh(x)cos(y) + icosh(x)sin(y)
  3231.    cosh(x+iy) = cosh(x)cos(y) + isinh(x)sin(y)
  3232.    ln(x+iy) = (1/2)ln(x*x + y*y) + i(arctan(y/x) + 2kPi)
  3233.                                     (k = 0, +-1, +-2, +-....)
  3234.  
  3235.                      sin(2x)               sinh(2y)
  3236.    tan(x+iy) = ------------------  + i------------------
  3237.                cos(2x) + cosh(2y)     cos(2x) + cosh(2y)
  3238.  
  3239.                     sinh(2x)                sin(2y)
  3240.    tanh(x+iy) = ------------------ + i------------------
  3241.                 cosh(2x) + cos(2y)    cosh(2x) + cos(2y)
  3242.  
  3243.        z^z = e^(log(z)*z)
  3244.        log(x + iy) = 1/2(log(x*x + y*y) + i(arc_tan(y/x))
  3245.        e^(x + iy) = (cosh(x) + sinh(x)) * (cos(y) + isin(y))
  3246.                    = e^x * (cos(y) + isin(y))
  3247.                    = (e^x * cos(y)) + i(e^x * sin(y))
  3248.  
  3249.  
  3250.  
  3251.                                      APPENDIX B
  3252.                           STONE SOUP WITH PIXELS: THE AUTHORS
  3253.  
  3254. Once upon a time, somewhere in Eastern Europe, there was a great
  3255. famine. People jealously hoarded whatever food they could find, hiding
  3256. it even from their friends and neighbors. One day a peddler drove his
  3257. wagon into a village, sold a few of his wares, and began asking ques-
  3258. tions as if he planned to stay for the night.
  3259.  
  3260. [No!  No!  It was three Russian Soldiers! - Lee Crocker]
  3261. [Wait!  I heard it was a Wandering Confessor! - Doug Quinn]
  3262. [Well *my* kids have a book that uses Russian Soldiers! - Bert]
  3263. [Look, who'se writing this documentation, anyway? - Monte]
  3264. [Ah, but who gets it *last* and gets to upload it? - Bert]
  3265.  
  3266. "There's not a bite to eat in the whole province," he was told. "Better
  3267. keep moving on."
  3268.  
  3269. "Oh, I have everything I need," he said. "In fact, I was thinking of
  3270. making some stone soup to share with all of you." He pulled an iron
  3271. cauldron from his wagon, filled it with water, and built a fire under
  3272. it. Then, with great ceremony, he drew an ordinary-looking stone from a
  3273. velvet bag and dropped it into the water.
  3274.  
  3275. By now, hearing the rumor of food, most of the villagers had come to
  3276. the square or watched from their windows. As the peddler sniffed the
  3277. "broth" and licked his lips in anticipation, hunger began to overcome
  3278. their skepticism.
  3279.  
  3280. "Ahh," the peddler said to himself rather loudly, "I do like a tasty
  3281. stone soup. Of course, stone soup with CABBAGE -- that's hard to beat."
  3282.  
  3283. Soon a villager approached hesitantly, holding a cabbage he'd retrieved
  3284. from its hiding place, and added it to the pot. "Capital!" cried the
  3285. peddler. "You know, I once had stone soup with cabbage and a bit of
  3286. salt beef as well, and it was fit for a king."
  3287.  
  3288. The village butcher managed to find some salt beef...and so it went,
  3289. through potatoes, onions, carrots, mushrooms, and so on, until there
  3290. was indeed a delicious meal for all. The villagers offered the peddler
  3291. a great deal of money for the magic stone, but he refused to sell and
  3292. traveled on the next day. And from that time on, long after the famine
  3293. had ended, they reminisced about the finest soup they'd ever had.
  3294.  
  3295.                                 ***
  3296.  
  3297. That's the way FRACTINT has grown, with quite a bit of magic, although
  3298. without the element of deception. (You don't have to deceive program-
  3299. mers to make them think that hours of painstaking, often frustrating
  3300. work is fun... they do it to themselves.)
  3301.  
  3302. It wouldn't have happened, of course, without Benoit Mandelbrot and the
  3303. explosion of interest in fractal graphics that has grown from his work
  3304. at IBM. Or without the example of other Mandelplotters for the PC. Or
  3305. without those wizards who first realized you could perform Mandelbrot
  3306. calculations using integer math (it wasn't us - we just recognize good
  3307. algorithms when we steal--uhh--see them).  Or those graphics experts
  3308. who hang around the Compuserve PICS forum and keep adding video modes
  3309. to the program.  Or...
  3310.  
  3311.  
  3312. A WORD ABOUT THE AUTHORS
  3313.  
  3314. FRACTINT is the result of a synergy between the main authors, 
  3315. many contributors, and published sources.  All three of the main 
  3316. authors have had a hand in many aspects of the code.  However 
  3317. each author has certain areas of greater contribution and 
  3318. creativity.  Since there is not room in the help screen for the 
  3319. contributions of the main authors, we list these here to 
  3320. facilitate those who would like to communicate with us on 
  3321. particular subjects.  
  3322.  
  3323. Bert Tyler is the original author.  He wrote the "blindingly 
  3324. fast" 386-specific 32 bit integer math code and the original 
  3325. video mode logic.  More than any of the authors, he has 
  3326. personally touched and massaged the entire source. His forte is 
  3327. writing fast 80x86 assembler, his knowledge of a variety of video 
  3328. hardware, and his skill at hacking up the code we send him!
  3329.  
  3330. Bert has a BA in mathematics from Cornell University.  He has 
  3331. been in programming since he got a job at the computer center in 
  3332. his sophmore year at college - in other words, he hasn't done an 
  3333. honest day's work in his life.  He has been known to pass himself 
  3334. off as a PC expert, a UNIX expert, a statistician, and even a 
  3335. financial modeling expert.  He is currently masquerading as an 
  3336. independent PC consultant, supporting the PC-to-Mainframe 
  3337. communications environment at NIH.  If you sent mail from the 
  3338. Internet to an NIH staffer on his 3+Mail system, it was probably 
  3339. Bert's code that mangled it during the Internet-to-3+Mail 
  3340. conversion.  He also claims to support the MS-Kermit environment 
  3341. at NIH. Fractint is Bert's first effort at building a graphics 
  3342. program.
  3343.  
  3344. Tim Wegner contributed the original implementation of palette 
  3345. animation, and is responsible for most of the 3D mechanisms.  He 
  3346. provided the main outlines of the "StandardFractal" engine and 
  3347. data structures, and is accused by his cohorts of being "obsessed 
  3348. with options".  Tim is quite proud of having originally 
  3349. integrated the 256 color super VGA modes in FRACTINT, especially 
  3350. since he knows almost nothing about it!
  3351.  
  3352. Tim has BA and MA degrees in mathematics from Carleton College 
  3353. and the University of California Berkeley.  He worked for 7 years 
  3354. overseas as a volunteer, doing things like working with Egyptian 
  3355. villagers building water systems. Since returning to the US in 
  3356. 1982, he has written shuttle navigation software, a software 
  3357. support environment prototype, and supported strategic 
  3358. information planning, all at NASA's Johnson Space Center.
  3359.  
  3360. Mark Peterson invented the periodicity detection logic, several 
  3361. original fractal types, transcendental function libraries, 
  3362. alternate math implementations, the formula compiler, and the 
  3363. "Juliabrot" intrinsic 3D fractals - in other words, most of the 
  3364. truly original ideas in FRACTINT!
  3365.  
  3366. Mark's knowledge of higher mathematics and programing was 
  3367. achieved almost entirely through self-study.  Currently he works 
  3368. as a real-time supervisor of the electrical transmission system 
  3369. for Connecticut and Massachusetts.  When not hard at work on 
  3370. programming projects he relaxes with Karate and Judo.
  3371.  
  3372.  
  3373. Accessing the Authors
  3374.  
  3375. ======================================
  3376.  
  3377. Communication between the authors for development of the next version
  3378. of FRACTINT takes place in COMART (Computer Art) Section 15 (Fractals)
  3379. of CompuServe (CIS).  Access to this area is open to any and all
  3380. interested in computer generated fractals.  Stop on by if you have
  3381. any questions or just want to take a peek at what's getting tossed
  3382. into the soup!
  3383.  
  3384. Also, you'll find many GIF image files generated by fellow Fractint
  3385. fans and many fractal programs as well in that forum's data library 15.
  3386.  
  3387. The following authors have agreed to the distribution of their address-
  3388. es. Usenet/Internet/Bitnet/Whatevernet users can reach CIS
  3389. users directly if they know the user ID (i.e., Bert Tyler can be
  3390. reached as 73477.433@compuserve.com).
  3391.  
  3392. Just remember that CIS charges by the minute, so it costs us a little
  3393. bit to read a message -- don't kill us with kindness. And don't send
  3394. all your mail to Bert -- spread it around a little!
  3395.  
  3396.  
  3397. Bert Tyler              [73477,433] on CIS
  3398. Tyler Software          btyler on BIX
  3399. 124 Wooded Lane
  3400. Villanova, PA 19085
  3401. (215) 525-6355
  3402.  
  3403. Timothy Wegner          [71320,675] on CIS
  3404. 4714 Rockwood           nmittiw@mwvm.mitre.org on Internet
  3405. Houston, TX 77004       twegner@mwunix.mitre.org on Internet
  3406. (713) 747-7543
  3407.  
  3408. Mark C. Peterson        [70441,3353] on CIS
  3409. 253 West St., H
  3410. Plantsville, CT 06479
  3411. (203) 276-9474 (voice)
  3412.  
  3413. Rob Beyer               [71021,2074] on CIS
  3414. 23 Briarwood Lane
  3415. Laguna Hills, CA, 92656
  3416. (714) 831-7665
  3417. (7-12pm PST & weekends)
  3418.  
  3419. Pieter Branderhorst     [72611,2257] on CIS
  3420. Amthor Computer Consultants
  3421. 3915 Bedford Rd.
  3422. Victoria, B.C., Canada V8N 4K6
  3423. (604) 477-1197
  3424.  
  3425. Lee Daniel Crocker      [73407,2030] on CIS
  3426. 1380 Jewett Avenue      lcrocker on BIX
  3427. Pittsburg, CA 94565     ames!pacbell!sactoh0!siva!lee on Usenet
  3428. (408) 354-8001
  3429.  
  3430. Monte Davis             [71450,3542] on CIS
  3431. 31 Washington St
  3432. Brooklyn, NY 11201
  3433. (718) 625-4610
  3434.  
  3435. Richard Finegold        [76701,153] on CIS
  3436. 1414 179th Ave NE       richg@blake.acs.washington.edu on InterNET
  3437. Bellevue, WA 98008      uw-beaver!blake!richg on UseNET
  3438. (206) 746-2694          
  3439.  
  3440. David Guenther          [70531,3525] on CIS
  3441. 50 Rockview Drive
  3442. Irvine, CA 92715
  3443.  
  3444. Michael L. Kaufman      [71610,431] on CIS
  3445. 2247 Ridge Ave, #2K     (also accessible via EXEC-PC bbs)
  3446. Evanston, IL, 60201
  3447. (708) 864-7916
  3448.  
  3449. Joe McLain              [75066,1257] on CIS
  3450. McLain Imaging
  3451. 2417 Venier
  3452. Costa Mesa, CA 92627
  3453. (714) 642-5219
  3454.  
  3455. Bob Montgomery          [73357,3140] on CIS
  3456. (Author of VPIC)
  3457. 132 Parsons Road
  3458. Longwood, Fl  32779
  3459.  
  3460. Marc Reinig             [72410,77] on CIS
  3461. 3415 Merrill Rd.        mqr@sun.com!daver!cypress!pld on Usenet
  3462. Aptos, CA. 95003        abu on BIX
  3463. (408) 475-2132
  3464.  
  3465. Dean Souleles           [75115,1671] on CIS
  3466. 8840 Collett Ave.
  3467. Sepulveda, CA  91343
  3468. (818) 893-7558
  3469.  
  3470. Scott Taylor            [72401,410] on CIS
  3471. 1901 South County Road 23E
  3472. Berthoud, CO 80513
  3473. (303) 651-6692
  3474.  
  3475. Paul Varner             [73237,441] on CIS
  3476. PO Box 930
  3477. Shepherdstown, WV 25443
  3478. (304) 876-2011
  3479.  
  3480. Phil Wilson             [76247,3145] on CIS
  3481. 410 State St., #55
  3482. Brooklyn, NY 11217
  3483. (718) 624-5272
  3484.  
  3485. APPENDIX C
  3486.                                    REVISION HISTORY
  3487.  
  3488. Features first appearing in:
  3489. ===========================
  3490.  
  3491. Version 12.0, 3/90
  3492.  
  3493. New SuperVGA Autodetecting and VESA Video modes (you tell us the
  3494.   resolution you want, and we'll figure out how to do it)
  3495. New Full-Screen Entry for most prompting
  3496. New Fractal formula interpreter ('type=formula') - roll your own
  3497.   fractals without using a "C" compiler!
  3498. New 'Julibrot' fractal type
  3499. Added floating point option to all remaining fractal types.
  3500. Real (funny glasses) 3D - Now with "real-time" lorenz3D!!
  3501. Non-Destructive <TAB> - Check out what your fractal parameters are
  3502.   without stopping the generation of a fractal image
  3503. New Cross-Hair mode for changing individual palette colors (VGA only)
  3504. Zooming beyond the limits of Integer algorithms (with automatic
  3505.   switchover to a floating-point algorithm when you zoom in "too far")
  3506. New 'inside=bof60', 'inside=bof61' ("Beauty of Fractals, Page nn") options
  3507. New starmap ('a' - for astrology? astronomy?) transformation option
  3508. Restrictions on the options available when using Expanded Memory
  3509.   "Disk/RAM" video mode have been removed 
  3510. And a lot of other nice little clean-up features that we've already
  3511.   forgotten that we've added...
  3512. Added capability to create 3D projection images (just barely) for people
  3513.   with 2 or 4 color video boards.
  3514.  
  3515. Version 11.0, 1/90
  3516.  
  3517. More fractal types
  3518.    mandelsinh/lambdasinh        mandelcosh/lambdacosh
  3519.    mansinzsqrd/julsinzsqrd      mansinexp/julsinexp
  3520.    manzzprw/julzzpwr            manzpower/julzpower
  3521.    lorenz (from Rob Beyer)      lorenz3d
  3522.    complexnewton                complexbasin
  3523.    popcorn
  3524.  
  3525. Virtually every fractal type given an integer AND a floating point algorithm.
  3526. "Float=yes" option now determines whether integer or floating-point
  3527.      algorithms are used for most fractal types
  3528. "F" command toggles the use of floating-point algorithms, flagged in
  3529.      the <Tab> status display 
  3530. 8/16/32/../256-Way decomposition option (from Richard Finegold)
  3531. "Biomorph=", "bailout=", "symmetry="  and "askvideo=" options
  3532. "T(ransform)" option in the IFS editor lets you select 3D options (used
  3533.      with the Lorenz3D fractal type)
  3534. The "T(ype)" command uses a new "Point-and-Shoot" method of selecting
  3535.      fractal types rather than prompting you for a type name
  3536. Bug fixes to continuous-potential algorithm on integer fractals, GIF
  3537.      encoder, and IFS editor
  3538.  
  3539. Version 10.0, 11/89
  3540.  
  3541. Barnsley IFS type (Rob Beyer)
  3542. Barnsley IFS3D type
  3543. MandelSine/Cos/Exp type
  3544. MandelLambda/MarksLambda/Unity type
  3545. BarnsleyM1/J1/M2/J2/M3/J3 type
  3546. Mandel4/Julia4 type
  3547. Sierpinski gasket type
  3548. Demm/Demj and bifurcation types (Phil Wilson), "test" is "mandel"
  3549.   again
  3550. <I>nversion command for most fractal types
  3551. <Q>uaternary decomposition toggle and "DECOMP=" argument
  3552. <E>ditor for Barnsley IFS parameters
  3553. Command-line options for 3D parameters
  3554. Spherical 3D calculations 5x faster
  3555. 3D now clips properly to screen edges and works at extreme
  3556.   perspective
  3557. "RSEED=" argument for reproducible plasma clouds
  3558. Faster plasma clouds (by 40% on a 386)
  3559. Sensitivity to "continuous potential" algorithm for all types except
  3560.   plasma and IFS
  3561. Palette-map <S>ave and Restore (<M>) commands
  3562. <L>ogarithmic and <N>ormal palette-mapping commands and arguments
  3563. Maxiter increased to 32,000 to support log palette maps
  3564. .MAP and .IFS files can now reside anywhere along the DOS path
  3565. Direct-video support for Hercules adapters (Dean Souleles)
  3566. Tandy 1000 160x200x16 mode (Tom Price)
  3567. 320x400x256 register-compatible-VGA "tweaked" mode
  3568. ATI VGA Wonder 1024x768x16 direct-video mode (Mark Peterson)
  3569. 1024x768x16 direct-video mode for all supported chipsets
  3570. Tseng 640x400x256 mode
  3571. "Roll-your-own" video mode 19
  3572. New video-table "hot-keys" eliminate need for enhanced keyboard to
  3573.   access later entries
  3574.  
  3575.  
  3576. Version 9.3, 8/89
  3577.  
  3578. <P>rint command and "PRINTER=" argument (Matt Saucier)
  3579. 8514/A video modes (Kyle Powell)
  3580. SSTOOLS.INI sensitivity and '@THISFILE' argument
  3581. Continuous-potential algorithm for Mandelbrot/Julia sets
  3582. Light source 3D option for all fractal types
  3583. "Distance estimator" M/J method (Phil Wilson) implemented as "test"
  3584.   type
  3585. LambdaCosine and LambdaExponent types
  3586. Color cycling mode for 640x350x16 EGA adapters
  3587. Plasma clouds for 16-color and 4-color video modes
  3588. Improved TARGA support (Joe McLain)
  3589. CGA modes now use direct-video read/writes
  3590. Tandy 1000 320x200x16 and 640x200x4 modes (Tom Price)
  3591. TRIDENT chip-set super-VGA video modes (Lew Ramsey)
  3592. Direct-access video modes for TRIDENT, Chips & Technologies, and ATI
  3593.   VGA WONDER adapters (John Bridges)... and, unlike version 9.1, they
  3594.   WORK in version 9.3!)
  3595. "Zoom-out" (<Control><Enter>) command
  3596. <D>os command for shelling out
  3597. 2/4/16-color Disk/RAM video mode capability and 2-color video modes
  3598.   supporting full-page printer graphics
  3599. "INSIDE=-1" option (treated dynamically as "INSIDE=maxiter")
  3600. Improved <H>elp and sound routines (even a "SOUND=off" argument)
  3601. Turbo-C and TASM compatibility (really!  Would we lie to you?)
  3602.  
  3603.  
  3604. Version 8.1, 6/89
  3605.  
  3606. <3>D restore-from-disk and 3D <O>verlay commands, "3D=" argument
  3607. Fast Newton algorithm including inversion option (Lee Crocker)
  3608. 16-bit Mandelbrot/Julia logic for 386-class speed with non-386 PCs on
  3609.   "large" images (Mark Peterson)
  3610. Restore now loads .GIF files (as plasma clouds)
  3611. TARGA video modes and color-map file options (Joe McLain)
  3612. 30 new color-cycling palette options (<Shft><F1> to <Alt><F10>)
  3613. "Disk-video, RAM-video, EMS-video" modes
  3614. Lambda sets now use integer math (with 80386 speedups)
  3615. "WARN=yes" argument to prevent over-writing old .FRA files
  3616.  
  3617.  
  3618. Version 7.0, 4/89
  3619.  
  3620. Restore from disk (from prior save-to-disk using v. 7.0 or later)
  3621. New types: Newton, Lambda, Mandelfp, Juliafp, Plasma, Lambdasine
  3622. Many new color-cycling options (for VGA adapters only)
  3623. New periodicity logic (Mark Peterson)
  3624. Initial displays recognize (and use) symmetry
  3625. Solid-guessing option (now the default)
  3626. Context-sensitive <H>elp
  3627. Customizable video mode configuration file (FRACTINT.CFG)
  3628. "Batch mode" option
  3629. Improved super-VGA support (with direct video read/writes)
  3630. Non-standard 360 x 480 x 256 color mode on a STANDARD IBM VGA!
  3631.  
  3632.  
  3633. Version 6.0, 2/89
  3634.  
  3635. 32-bit integer math emulated for non-386 processors; FRACT386 renamed
  3636.   FRACTINT
  3637. More video modes
  3638.  
  3639.  
  3640. Version 5.1, 1/89
  3641.  
  3642. Save to disk
  3643. New! Improved! (and Incompatible!) optional arguments format
  3644. "Correct" initial image aspect ratio
  3645. More video modes
  3646.  
  3647.  
  3648. Version 4.0, 12/88
  3649.  
  3650. Mouse support (Mike Kaufman)
  3651. Dynamic iteration limits
  3652. Color cycling
  3653. Dual-pass mode
  3654. More video modes, including "tweaked" modes for IBM VGA and register-
  3655.   compatible adapters
  3656.  
  3657.  
  3658. Version 3.1, 11/88
  3659.  
  3660. Julia sets
  3661.  
  3662.  
  3663. Version 2.1, 10/23/88 (the "debut" on CIS)
  3664.  
  3665. Video table
  3666. CPU type detector
  3667.  
  3668.  
  3669. Version 2.0, 10/10/88
  3670.  
  3671. Zoom and pan
  3672.  
  3673.  
  3674. Version 1.0, 9/88
  3675.  
  3676. The original, blindingly fast, 386-specific 32-bit integer algorithm
  3677.  
  3678.  
  3679.  
  3680. APPENDIX D
  3681.  
  3682.                                      BIBLIOGRAPHY
  3683.  
  3684. BARNSLEY, Michael: "Fractals Everywhere", Academic Press, 1988.
  3685.  
  3686. DEWDNEY, A. K., "Computer Recreations" columns in "Scientific
  3687.   American" -- 8/85, 7/87, 11/87, 12/88, 7/89.
  3688.  
  3689. FEDER, Jens: "Fractals", Plenum, 1988. Quite technical, with good coverage
  3690.     of applications in fluid percolation, game theory, and other areas.
  3691.  
  3692. GLEICK, James: "Chaos: Making a New Science", Viking Press, 1987.
  3693.     The best non-technical account of the revolution in our             
  3694.     understanding of dynamical systems and its connections with fractal 
  3695.     geometry.
  3696.  
  3697. MANDELBROT, Benoit: "The Fractal Geometry of Nature", W. H. Freeman &
  3698.   Co., 1982.
  3699.     An even more revised and expanded version of the 1977 work. A rich
  3700.     and sometimes confusing stew of formal and informal mathematics,
  3701.     the prehistory of fractal geometry, and everything else. Best taken
  3702.     in small doses.
  3703.  
  3704. MANDELBROT, Benoit: "Fractals: Form, Chance, and Dimension", W. H.
  3705.   Freeman & Co., 1977
  3706.     A much revised translation of "Les objets fractals: forme, hasard,
  3707.     et dimension," Flammarion, 1975.
  3708.  
  3709. PEITGEN, Heinz-Otto & RICHTER, Peter: "The Beauty of Fractals,"
  3710.   Springer-Verlag, 1986.
  3711.     THE coffee-table book of fractal images, knowledgeable on computer
  3712.     graphics as well as the mathematics they portray.
  3713.  
  3714. PEITGEN, Heinz-Otto & SAUPE, Ditmar: "The Science of Fractal Images,"
  3715.   Springer-Verlag, 1988.
  3716.     A fantastic work, with a few nice pictures, but mostly filled
  3717.     with *equations*!!!
  3718.  
  3719.  
  3720.  
  3721. APPENDIX E
  3722.  
  3723.                                OTHER FRACTAL PROGRAMS
  3724.  
  3725.  
  3726. (This section is new, and pathetically small because we added it at the
  3727. last minute.  Please help us out, here...)
  3728.  
  3729.  
  3730. FDESIGN, by Doug Nelson (CIS ID 70431,3374) - a freeware IFS fractal
  3731.   generator available from Compuserve in COMART Lib 15, and probably
  3732.   on your local BBS.  This program requires a VGA adapter and a Microsoft-
  3733.   compatible mouse, but it generates IFS fractals in a *much* more
  3734.   intuitive fashion than Fractint.  It can also (beginning with version 
  3735.   3.0) save its IFS formulas in Fractint-style .IFS files.
  3736.   
  3737.